Android无法完全删除CardView的边距/填充和圆角

时间:2015-07-29 17:03:04

标签: android android-layout android-cardview

我正在使用Pre-LolliPop Android手机进行开发,现在我有一个RecyclerView,其中包含带有图像和文本的CardView布局。我尝试修剪小部件默认的所有边距,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
    android:background="@android:color/black"
    android:orientation="vertical"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal"
    android:padding="0dp"
    android:layout_margin="0dp" >

    <android.support.v7.widget.CardView
        android:layout_width="@dimen/adapter_itemlist_category_cardview_width"
        android:layout_height="@dimen/adapter_itemlist_category_cardview_height"
        android:id="@+id/adapter_itemlist_category_cardview"
        android:padding="0dp"
        android:background="@android:color/transparent"
        card_view:cardElevation="0dp"
        card_view:cardMaxElevation="0dp" 
        card_view:cardUseCompatPadding="true"
        >

        <!-- some inner content-->
    </android.support.v7.widget.CardView>
</LinearLayout>

android:background="@android:color/black"中设置LinearLayout是为了直观地查看是否还有空格/边距。

然而,即使当我同时设置card_view:cardElevation =“0dp”和card_view:cardMaxElevation =“0dp”,仍有像CardViews项目之间的RecyclerView内几DP浅灰缘,显然是由于圆角落(我不希望它成为圆角): Corners, and there are little light grey spacings between the items

然后我尝试将圆角半径设置为0 dp,但我发现如果设置card_view:cardCornerRadius="0dp",它将在执行期间变为以下错误:

07-30 00:49:49.219: E/AndroidRuntime(16237): FATAL EXCEPTION: main
07-30 00:49:49.219: E/AndroidRuntime(16237): java.lang.IllegalArgumentException: radius must be > 0
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.graphics.RadialGradient.<init>(RadialGradient.java:34)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.support.v7.widget.RoundRectDrawableWithShadow.buildShadowCorners(RoundRectDrawableWithShadow.java:285)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.support.v7.widget.RoundRectDrawableWithShadow.buildComponents(RoundRectDrawableWithShadow.java:307)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.support.v7.widget.RoundRectDrawableWithShadow.draw(RoundRectDrawableWithShadow.java:209)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13744)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.widget.FrameLayout.draw(FrameLayout.java:467)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12710)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13762)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12710)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:3558)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13762)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:3037)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12710)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13762)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12710)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12708)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13762)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.widget.FrameLayout.draw(FrameLayout.java:467)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.widget.ScrollView.draw(ScrollView.java:1806)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12710)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.draw(View.java:13483)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.drawChild(ViewGroup.java:3169)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3039)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12708)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3151)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12646)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.View.getDisplayList(View.java:12754)
07-30 00:49:49.219: E/AndroidRuntime(16237):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGrou

结果是这个属性不能设置为零值。

因此,有没有办法在Lollipop前设备中完全删除CardView的圆角?如果连边缘/填充物都是由它制成的?如果没有,如何完全删除它们?

1 个答案:

答案 0 :(得分:0)

我切换到非cardview,它对我有用。

相关问题