如何在RecyclerView中删除beetwen cardView空间?

时间:2018-03-05 09:04:04

标签: android android-recyclerview android-cardview

如何删除cardViews之间的空格?

image

这是我使用cardView的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="3dp">

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        style="@style/ProductsCardViewStyle">

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

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_gravity="center_horizontal"
                android:padding="9dp"/>

            <TextView
                android:id="@+id/nameText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="name"
                android:textColor="@android:color/black"
                android:ellipsize="end"
                android:minLines="2"
                android:maxLines="2"
                android:singleLine="false"/>

            <TextView
                android:id="@+id/amountText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="amount"
                android:textColor="@android:color/black"
                android:textStyle="bold" />

            <Button
                android:id="@+id/toBasket"
                android:background="@drawable/round_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Купить" />

        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

是风格。我将这个阶梯添加到我的cardView /我尝试更改cardElevation值,并且我使用cardElevation与负值 - 是错误的。我该如何更改此空格?

<style name="ProductsCardViewStyle" parent="Theme.AppCompat.Light">
    <item name="cardCornerRadius">17dp</item>
    <item name="cardElevation">1dp</item>
    <item name="contentPaddingBottom">4dp</item>
    <item name="contentPaddingTop">4dp</item>
    <item name="contentPaddingLeft">4dp</item>
    <item name="contentPaddingRight">4dp</item>
    <item name="cardUseCompatPadding">true</item>
    <item name="cardBackgroundColor">@color/products_item_color</item>
</style>

2 个答案:

答案 0 :(得分:4)

从顶部的线性布局中移除android:padding="3dp"或将其缩小..转到1dp

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="1dp" //reduce the space like this>

由于你的网格是水平的填充

  1. 3dp + 3dp 总计: - 6dp 造成太多空间..
  2. 所以,

    1 dp 填充将在您的卡片之间留出总 2dp 空间。

答案 1 :(得分:0)

您可以在RecyclerView和android:padding

周围的外部ViewGroup中删除cardUseCompatPadding
  

cardUseCompatPadding:在卡片视图周围添加空间,以防止卡片的父视图剪切卡片的阴影。

您可以使用

在预览窗口中查看结果
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layoutManager="android.support.v7.widget.GridLayoutManager"
    tools:listitem="@layout/test_item"
    tools:spanCount="2" />

enter image description here

另外请避免使用嵌套视图。更多信息 - https://android-developers.googleblog.com/2017/08/understanding-performance-benefits-of.html