在预棒棒糖设备上使用CardView的白色空间

时间:2015-10-01 11:24:07

标签: android material-design android-cardview

我正在尝试为应用程序上的某些视图添加舍入和阴影,并且正在利用卡片视图库来实现这一点。它在棒棒糖设备上看起来很好,但是在与棒棒糖之前的任何事情都遇到兼容性问题。

我将在前言中说,我已经查看了以下问题中的答案,发现其中没有一个对我有效。

最受欢迎的答案是添加属性' cardPreventOverlap = false'但这会删除圆角。我尝试过这个标志的变体和' cardUseCompatPadding =" true"'但他们似乎都没有做到这一点。有没有其他人遇到同样的问题?

我的代码:

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    card_view:cardCornerRadius="4dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/selector"
        android:gravity="center"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="44dp"
            android:layout_height="match_parent"
            android:layout_marginRight="4dp"
            android:background="@color/mid_yellow"
            android:padding="0dp"
            android:src="@drawable/ic_add_white_24dp" />

        <TextView
            style="@style/Text.Primary.White"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="4dp"
            android:text="Button" />
    </LinearLayout>

这是目前在Android 5.0上的显示方式:

enter image description here

4.4.2上完全相同的代码显示为:

enter image description here

使用&#39; cardPreventOverlap = false&#39;:

enter image description here

更新很遗憾,我们无法解决问题;鉴于应用程序只有较小的安装基础pre5.0,我们认为它并不重要。我们最终选择了第三个选项&#39; cardPreventOverlap = false&#39;。

2 个答案:

答案 0 :(得分:3)

不支持内容剪辑,因为旧设备上的内容非常昂贵。如果您愿意,可以使用Carbon。它有自己的CardView实现,可以正确地将内容剪切到圆角。 Carbon还为所有其他布局添加了内容裁剪和高程,因此您可以使用带有圆角和阴影的LinearLayout。见图:

enter image description here

答案 1 :(得分:0)

您可以使用card_view:cardCornerRadius设置卡片视图的background,而不是drawable,而不是<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> <corners android:radius="4dip"/> </shape>

cardview

您也可以对<corners android:topLeftRadius="4dp" android:bottomLeftRadius="4dp"/> 中的每个元素执行此操作,以便为每个元素提供正确的背景颜色。 在这种情况下,您只能使用以下内容指定某些角:

cardUseCompatPadding="true"

例如, + 按钮。

将此项与{{1}}

结合使用