Cardview - 卡周围的白色边框

时间:2015-04-01 13:58:05

标签: android android-cardview

我正在使用cardview作为我正在编写的自定义视图的根目录。我使用的是v7支持库。我的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:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="6dp"
        card_view:cardElevation="0dp">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

        <!-- some other views -->
    </LinearLayout>
</android.support.v7.widget.CardView>

我的问题是我的卡片视图周围有一个白色边框。它看起来像是指示高度,因为它在右侧较厚。我尝试在我的XML中调整cardElevationMaxCardElevation,如下所示: card_view:cardElevation="0dp"

并在我的自定义视图中的代码中扩展了CardView并使用了这种布局:

setCardElevation(0);
setMaxCardElevation(0);

但白色边框仍然存在。我不知道如何摆脱它。如果有人对此为何发生任何意见或建议如何删除白色边框,我们将不胜感激。非常感谢。

4 个答案:

答案 0 :(得分:82)

我知道它有点晚了,但对于有类似问题的人来说:

我遇到了同样的问题:在棒棒糖前设备上显示了白色边框。

我解决了它在您的XML上将cardPreventCornerOverlap设置为false

像这样:

<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="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginRight="6dp"
    card_view:cardPreventCornerOverlap="false">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- some other views -->
    </LinearLayout>
</android.support.v7.widget.CardView>

希望这有帮助!

答案 1 :(得分:3)

支持CardView不支持内容剪辑,因为它在旧设备上很昂贵。可以使用Canvas.saveLayer / restoreLayer和PorterDuff模式剪辑内容。这就是Carbon如何通过正确的内容裁剪实现圆角。见图:

enter image description here

答案 2 :(得分:3)

我可能会在游戏中迟到,但我遇到了同样的问题。只是想分享一个简单的解决方案!

我的自定义视图扩展了CardView,我在XML中的根元素(即CardView)中应用了一个边距,就像在原始问题中一样。这最终给了我额外的白色边框:

Before

解决方案是将边距从自定义视图XML的根目录移动到自定义视图的声明(检查代码段中的注释)

代码段:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cvSettings"
    style="@style/DefaultCardViewStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/default_margin" <!-- Remove this -->
    app:cardElevation="@dimen/default_card_elevation">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        .
        .
        .
</android.support.v7.widget.CardView>

结束只是移动边距到我的自定义视图声明,摆脱了额外的白色边框:

<com.example.android.custom.MyCustomView
        android:id="@+id/custom_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/default_margin" <!-- Move it here-->
        cv:pt_widgetColor="@color/colorAccent" />

改变后,更干净:):

enter image description here

答案 3 :(得分:-4)

在xml card_view中使用cardBackgroundColor =“color” 示例代码:

<android.support.v7.widget.CardView
        android:id="@+id/card_view_khaterat"
        android:layout_width="250dp"
        android:layout_height="100dp"
        android:layout_gravity="center_horizontal"
        app:cardBackgroundColor="#f56f6c"/>