【问题标题】:Android: Removing the spacing above and below CardViews in a RecyclerViewAndroid:删除 RecyclerView 中 CardViews 上方和下方的间距
【发布时间】:2015-10-09 13:49:01
【问题描述】:

我正在使用带有 CardViews 的 RecyclerView,我想删除 RecyclerView 内子卡之间的边距/填充/间距。我怎样才能做到这一点? 这是我的 CardView:

    <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:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardUseCompatPadding="false">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="horizontal">

        <!--status lock-->
        <ImageView
            android:id="@+id/imageField"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_margin="20dp" />

        <!--text info section-->
        <LinearLayout
            android:id="@+id/textInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">

            <!--NAME-->
            <TextView
                android:id="@+id/nameField"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="item name"
                android:gravity="center_vertical"
                android:textSize="@dimen/abc_text_size_large_material" />

            <!--category-->
            <TextView
                android:id="@+id/categoryField"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:lines="1"
                android:maxLines="1"
                android:text="category"
                android:textSize="@dimen/abc_text_size_small_material" />

            <!--working hours-->
            <LinearLayout
                android:id="@+id/workingHours"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:lines="1"
                android:maxLines="1"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/workingHoursIcon"
                    android:layout_width="15dp"
                    android:layout_height="15dp"
                    android:layout_gravity="center_vertical"
                    android:background="@drawable/ic_clock"
                    android:padding="50dp"></ImageView>

                <TextView
                    android:id="@+id/WHStart"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp" />

                <TextView
                    android:id="@+id/dash"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp"
                    android:text=" - " />

                <TextView
                    android:id="@+id/WHEnd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:lines="1"
                    android:maxLines="1"
                    android:paddingLeft="5dp" />

            </LinearLayout>

            <!--message-->
            <LinearLayout
                android:id="@+id/messageSection"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/messageIcon"
                    android:layout_width="15dp"
                    android:layout_height="15dp"
                    android:layout_gravity="center_vertical"
                    android:background="@drawable/ic_message"
                    android:padding="50dp" />

                <TextView
                    android:id="@+id/message"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:lines="1"
                    android:maxLines="1"
                    android:paddingLeft="5dp"
                    android:text="No Message" />
            </LinearLayout>

        </LinearLayout>

        <!--add to favorite button-->
        <ImageButton
            android:id="@+id/btn_add_to_favorite_list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="20dp"
            android:layout_marginLeft="48dp"
            android:layout_marginRight="20dp"
            android:layout_marginStart="48dp"
            android:background="@drawable/ic_star_gray" />

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

还有我的 RecyclerView:

<android.support.v7.widget.RecyclerView
            android:id="@+id/my_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/my_store"
            android:scrollbars="vertical" />

截图如下:

【问题讨论】:

  • 您可以发布问题的屏幕截图吗?
  • 如果您不想要卡片之间的空间,为什么不使用不使用 CardView 的布局/视图设置?只需使用 FrameLayout。
  • @emerssso cardview 提供更好的性能
  • @A_Matar,我可以看到 RecyclerView 如何提供更好的性能,但 CardView extends FrameLayout,所以我看不到 FrameLayout 如何具有额外的 unwanted 装饰(填充/阴影)会更高效。
  • @A_Matar 检查我的回答,看看是否有帮助。

标签: android android-recyclerview android-cardview


【解决方案1】:

这可能就是你要找的CardView inside RecyclerView has extra margins

另外,如果您不想保留空间,您应该简单地使用 LinearLayout 作为适配器布局,完全移除 CardView,应该这样做。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    检查是边距还是内边距(开发选项/显示布局边界)

    CardView 在 pre-L API 级别中添加填充以显示阴影。在 L 中,除非你设置 useCompatPadding=true,否则不应该有任何间隙。

    添加负边距(虽然它很难看)应该可以工作。

    这可能有效

    card_view:contentPaddingLeft="-3dp"
    card_view:contentPaddingRight="-3dp"
    card_view:contentPaddingTop="-3dp"
    card_view:contentPaddingBottom="-3dp"
    

    【讨论】:

      【解决方案3】:

      试试这个:

      <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:card_view="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      
      <android.support.v7.widget.CardView
      android:id="@+id/card_view"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:cardUseCompatPadding="false">
      
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"
          android:orientation="horizontal">
      
          <!--status lock-->
          <ImageView
              android:id="@+id/imageField"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center_vertical"
              android:layout_margin="20dp" />
      
          <!--text info section-->
          <LinearLayout
              android:id="@+id/textInfo"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_weight="1"
              android:orientation="vertical">
      
              <!--NAME-->
              <TextView
                  android:id="@+id/nameField"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="item name"
                  android:gravity="center_vertical"
                  android:textSize="@dimen/abc_text_size_large_material" />
      
              <!--category-->
              <TextView
                  android:id="@+id/categoryField"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:lines="1"
                  android:maxLines="1"
                  android:text="category"
                  android:textSize="@dimen/abc_text_size_small_material" />
      
              <!--working hours-->
              <LinearLayout
                  android:id="@+id/workingHours"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:lines="1"
                  android:maxLines="1"
                  android:orientation="horizontal">
      
                  <ImageView
                      android:id="@+id/workingHoursIcon"
                      android:layout_width="15dp"
                      android:layout_height="15dp"
                      android:layout_gravity="center_vertical"
                      android:background="@drawable/ic_clock"
                      android:padding="50dp"></ImageView>
      
                  <TextView
                      android:id="@+id/WHStart"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:paddingLeft="5dp" />
      
                  <TextView
                      android:id="@+id/dash"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:paddingLeft="5dp"
                      android:text=" - " />
      
                  <TextView
                      android:id="@+id/WHEnd"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:lines="1"
                      android:maxLines="1"
                      android:paddingLeft="5dp" />
      
              </LinearLayout>
      
              <!--message-->
              <LinearLayout
                  android:id="@+id/messageSection"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content">
      
                  <ImageView
                      android:id="@+id/messageIcon"
                      android:layout_width="15dp"
                      android:layout_height="15dp"
                      android:layout_gravity="center_vertical"
                      android:background="@drawable/ic_message"
                      android:padding="50dp" />
      
                  <TextView
                      android:id="@+id/message"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:lines="1"
                      android:maxLines="1"
                      android:paddingLeft="5dp"
                      android:text="No Message" />
              </LinearLayout>
      
          </LinearLayout>
      
          <!--add to favorite button-->
          <ImageButton
              android:id="@+id/btn_add_to_favorite_list"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginEnd="20dp"
              android:layout_marginLeft="48dp"
              android:layout_marginRight="20dp"
              android:layout_marginStart="48dp"
              android:background="@drawable/ic_star_gray" />
      
      </LinearLayout>
      

      【讨论】:

      • 没用,那是我最初的设置,但我意识到它没用,所以我把它弄红了:(
      • 您需要将compatPadding设置为false,如果不起作用尝试将android:padding="0dp"设置为CardView之外的LinearLayout
      猜你喜欢
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2013-02-15
      • 2014-07-11
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多