【问题标题】:Android not able to completely remove CardView's margins/paddings and rounded cornersAndroid 无法完全删除 CardView 的边距/填充和圆角
【发布时间】:2015-10-20 19:23:52
【问题描述】:

我正在使用 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>

LinearLayout 中设置android:background="@android:color/black" 用于直观查看是否仍有任何空格/边距存在。

但是,即使我同时设置了 card_view:cardElevation="0dp" 和 card_view:cardMaxElevation="0dp",RecyclerView 中的 CardViews 项目之间仍然有一些 dp 浅灰色边距,显然是由于轮角落(无论如何我不希望它是圆角):

然后我尝试将圆角半径设置为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

事实证明,这个属性不能设置为零值。

因此,有没有办法在棒棒糖之前的设备中完全去除 CardView 的圆角?如果即使是由此产生的边距/填充?如果没有,如何完全删除它们?

【问题讨论】:

  • 那你为什么还要使用 CardView 呢? CardView 的整个点就是高程阴影和圆角。
  • 你是对的,当我将 CardView 切换到普通的 LinearLayout 之后,所有这些问题都没有了。

标签: android android-layout android-cardview


【解决方案1】:

我切换到非卡片视图,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多