在Android 5.0上的AppCompat CardView上设置XML的高程
据我所知,在预览阶段的早期,似乎没有办法只在CardView
上设置XML的高程,而没有在Java中进行破解。 现在官方发布了,有没有办法在XML中这样做,而不用编写Java代码来设置高程?
我已经试过card_view:cardElevation
没有效果。 我曾经想过,当我使用5.0的模拟器一切都很好。 但是现在我正在使用我的实际设备上的正式版本,所有的CardView
消失了
前棒棒糖,它的效果很好。
这是我的完整的XML
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:id="@+id/cv1" card_view:cardElevation="4dp" android:layout_margin="6dp" card_view:cardCornerRadius="3dp" android:layout_height="match_parent">
它看起来像一个边距/填充问题,尝试将cardUseCompatPadding属性设置为true。 例如:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="6dp" card_view:cardUseCompatPadding="true" card_view:cardElevation="4dp" card_view:cardCornerRadius="3dp">
来自Android文档的解释:
CardView添加额外的填充以在L之前的平台上绘制阴影。
这可能会导致卡在L和L之间具有不同的大小。如果您需要将CardView与其他视图alignment,则可能需要使用特定于版本的维度资源来说明更改。 或者,您可以将cardUseCompatPadding标志设置为true,CardView将在平台L和之后添加相同的填充值。
由于将cardUseCompatPadding标志设置为true会在UI中添加不必要的空白,默认值为false。
您必须使用cardElevation属性
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" card_view:cardElevation="4dp" />
如果你有这条线
机器人:硬件加速=“假”
在清单应用程序标记中,不显示阴影。 尝试
删除这一行
要么
使用android:hardwareAccelerated =“true”
。 这对我有用! 我希望它也能为你工作:)