Android 支持 CardView 的阴影问题
Android support CardView issues with shadows
我正在使用 android.support.v7.widget.CardView
库并遇到一些问题。
这里我使用一些边距简单地堆叠了 3 CardViews
。 运行 它在 Android L 前 2 张卡片的顶部阴影不是 seen/drawn。
这里是API16级抽牌。
是否可以始终绘制顶部阴影?
谢谢。
编辑:xml代码
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardUseCompatPadding="true" />
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardUseCompatPadding="true" />
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true">
试试这个:
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="@dimen/card_view_corner_radius"
card_view:cardElevation="4dp" />
也许cardElevation
去做。
根据我的研究,我认为 GPU 绘图随海拔高度更新会导致此问题。由于卡片处于相同的海拔高度和相同的背景,因此平台将它们混合在一起。这就是旧版本绘制一些边框的原因,因为它不支持提升。
我的解决方法是为底部卡片添加 0dp 高度,然后为中间卡片添加 1dp,顶部卡片保持默认高度,即 2dp。现在可以看到轻微的边框。
我正在使用 android.support.v7.widget.CardView
库并遇到一些问题。
这里我使用一些边距简单地堆叠了 3 CardViews
。 运行 它在 Android L 前 2 张卡片的顶部阴影不是 seen/drawn。
这里是API16级抽牌。
是否可以始终绘制顶部阴影?
谢谢。
编辑:xml代码
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardUseCompatPadding="true" />
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardUseCompatPadding="true" />
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/card_view_corner_radius"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true">
试试这个:
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="@dimen/card_view_corner_radius"
card_view:cardElevation="4dp" />
也许cardElevation
去做。
根据我的研究,我认为 GPU 绘图随海拔高度更新会导致此问题。由于卡片处于相同的海拔高度和相同的背景,因此平台将它们混合在一起。这就是旧版本绘制一些边框的原因,因为它不支持提升。
我的解决方法是为底部卡片添加 0dp 高度,然后为中间卡片添加 1dp,顶部卡片保持默认高度,即 2dp。现在可以看到轻微的边框。