我正在使用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中调整cardElevation
和MaxCardElevation
,如下所示:
card_view:cardElevation="0dp"
并在我的自定义视图中的代码中扩展了CardView并使用了这种布局:
setCardElevation(0);
setMaxCardElevation(0);
但白色边框仍然存在。我不知道如何摆脱它。如果有人对此为何发生任何意见或建议如何删除白色边框,我们将不胜感激。非常感谢。
答案 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如何通过正确的内容裁剪实现圆角。见图:
答案 2 :(得分:3)
我可能会在游戏中迟到,但我遇到了同样的问题。只是想分享一个简单的解决方案!
我的自定义视图扩展了CardView
,我在XML中的根元素(即CardView
)中应用了一个边距,就像在原始问题中一样。这最终给了我额外的白色边框:
解决方案是将边距从自定义视图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" />
改变后,更干净:):
答案 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"/>