Ivo*_*Liu 7 android android-5.0-lollipop android-elevation
我已经玩了L预览了几天,有一件似乎不起作用的是android:elevation视图的属性.它在调用时工作得很好View.setElevation(),但它似乎忽略了XML属性.我正在使用Android Studio 0.8.2 minSdkVersion并targetSdkVersion设置'L'并compileSdkVersion设置为'android-L'.buildToolsVersion是"20.0.0".以下是无法正常工作的示例布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="10dp"
android:elevation="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="top"/>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="10dp"
android:elevation="0dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bottom"/>
</android.support.v7.widget.CardView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以下是结果的屏幕截图:imgur.com/mqeq9vK
根据android:elevation我的说法,底卡应该在"地面"上平放,但事实并非如此.事实上,它看起来与顶级卡的高度没有什么不同5dp.这是一个已知问题,它对你有用吗?
编辑:似乎只有这种情况CardView,或者至少它不是问题Buttons.在这个布局中我替换CardView了Button,即使阴影有点搞砸(已知的bug),你仍然可以看到高程的差异.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="2dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="1dp"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
编辑2:几乎确认此问题仅影响CardView,android:elevation适用于任何其他视图.有关发生这种情况的原因的详细解释,请查看已接受的答案.与此同时,我的解决方法是CardView用a 替换FrameLayout并设置android:background为drawable.以下是可用的卡背景可绘制的示例:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#fff" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我也将此作为一个错误提交,所以如果它影响到您,请为此问题加注星标.https://code.google.com/p/android-developer-preview/issues/detail?id=731
CardView在初始化期间设置自己的高程,它将覆盖您从XML设置的任何内容.您应该将此文件存档为https://code.google.com/p/android-developer-preview/wiki/FilingIssues?tm=3
@Override
public void initialize(CardViewDelegate cardView, Context context, int backgroundColor,
float radius) {
cardView.setBackgroundDrawable(new RoundRectDrawable(backgroundColor, radius));
View view = (View) cardView;
view.setClipToOutline(true);
view.setElevation(context.getResources().getDimension(R.dimen.cardview_elevation));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12357 次 |
| 最近记录: |