如何在 recyclerview 的 gridLayoutManager 中删除 cardview 的右边距
how to remove right margin from cardview in gridLayoutManager of recyclerview
我使用带有 gridLayoutManager 作为其布局管理器的 recyclerView 来显示 cardView,但我不知道为什么它有这些右边距,尽管我在 recyclerView 和 cardView 中都没有给出任何边距
recycler查看代码
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/constraintLayoutTop"
app:layout_constraintVertical_weight="1" />
卡片查看代码
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com
/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardView1"
android:layout_width="@dimen/_146sdp"
android:layout_height="@dimen/_175sdp"
app:cardCornerRadius="@dimen/_20sdp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
app:strokeColor="@android:color/darker_gray"
app:strokeWidth="@dimen/_1sdp">
GridLayoutManager
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),2,GridLayoutManager.VERTICAL,false);
mRecyclerView.setLayoutManager(gridLayoutManager);
解决方案一:
试试这个解决方案,您可以记住并在需要时实施。没有错误,没有疯狂的计算。将边距放入卡片/项目布局并将与填充相同的大小放入 RecyclerView:
item_layout.xml
<CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:margin="10dp">
activity_layout.xml
<RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"/>
Example :
方案二:
像这样在 Recyclerview
项目布局中使用 CardView
:
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/_20sdp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
app:strokeColor="@android:color/darker_gray"
app:strokeWidth="@dimen/_1sdp"
app:contentPadding="10dp"
card_view:cardUseCompatPadding="true">
您将尺寸尺寸设置为 CardView
的宽度,项目获得该尺寸,左侧 space 看起来是边距。
您应该将单元格宽度设置为 match_parent
并且 recyclerview
将宽度大小设置为 phone 宽度的一半。
我使用带有 gridLayoutManager 作为其布局管理器的 recyclerView 来显示 cardView,但我不知道为什么它有这些右边距,尽管我在 recyclerView 和 cardView 中都没有给出任何边距
recycler查看代码
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/constraintLayoutTop"
app:layout_constraintVertical_weight="1" />
卡片查看代码
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com
/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardView1"
android:layout_width="@dimen/_146sdp"
android:layout_height="@dimen/_175sdp"
app:cardCornerRadius="@dimen/_20sdp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
app:strokeColor="@android:color/darker_gray"
app:strokeWidth="@dimen/_1sdp">
GridLayoutManager
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),2,GridLayoutManager.VERTICAL,false);
mRecyclerView.setLayoutManager(gridLayoutManager);
解决方案一:
试试这个解决方案,您可以记住并在需要时实施。没有错误,没有疯狂的计算。将边距放入卡片/项目布局并将与填充相同的大小放入 RecyclerView:
item_layout.xml
<CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:margin="10dp">
activity_layout.xml
<RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"/>
Example :
方案二:
像这样在 Recyclerview
项目布局中使用 CardView
:
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/_20sdp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
app:strokeColor="@android:color/darker_gray"
app:strokeWidth="@dimen/_1sdp"
app:contentPadding="10dp"
card_view:cardUseCompatPadding="true">
您将尺寸尺寸设置为 CardView
的宽度,项目获得该尺寸,左侧 space 看起来是边距。
您应该将单元格宽度设置为 match_parent
并且 recyclerview
将宽度大小设置为 phone 宽度的一半。