如何将 RecyclerView 与 GridLayout (spanCount = 2) 居中?
How to Center RecyclerView with GridLayout (spanCount = 2)?
所以我正在试验 RecyclerView
。
这是我的 activity_main...
<LinearLayout
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"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/activityMain_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:spanCount="2"/>
</LinearLayout>
这是我的 MainActivity...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
cardView()
}
private fun cardView() {
val adapterReference = GroupAdapter<GroupieViewHolder>()
activityMain_recyclerView.adapter = adapterReference
// activityMain_recyclerView.layoutManager = GridLayoutManager(this, 2)
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
}
}
class CardViewGroup() : Item<GroupieViewHolder>() {
override fun getLayout(): Int {
return R.layout.layout_card_view
}
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
}
}
目前看起来是这样的...
我希望让它看起来像...
您还没有分享 layout_card_view.xml 但我认为这会起作用
在您的 layout_card_view.xml
中添加 android:layout_gravity="center"
希望对您有所帮助
我做到了
将此代码用于 layout_card_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView
android:layout_width="96dp"
android:layout_height="128dp"
android:backgroundTint="#6060ff"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Hello world!"/>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
解决了这个问题。
在 recyclerView 体验中获得最佳效果的步骤
将 <CardView>
作为布局的父级,并将其尺寸设置为...
layout_width="match_parent"
layout_height="wrap_content"
layout_margin="16dp"
try and remove this after building it to see the difference.
将 <ConstraintLayout>
作为 <CardView>
父级中的容器。并将其尺寸设置为...
layout_width="match_parent"
layout_height="wrap_content"
P.s。不要忘记为您的 Cardview 背景和 recyclerView 背景添加对比以清楚地看到差异
所以我正在试验 RecyclerView
。
这是我的 activity_main...
<LinearLayout
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"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/activityMain_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:spanCount="2"/>
</LinearLayout>
这是我的 MainActivity...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
cardView()
}
private fun cardView() {
val adapterReference = GroupAdapter<GroupieViewHolder>()
activityMain_recyclerView.adapter = adapterReference
// activityMain_recyclerView.layoutManager = GridLayoutManager(this, 2)
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
adapterReference.add(CardViewGroup())
}
}
class CardViewGroup() : Item<GroupieViewHolder>() {
override fun getLayout(): Int {
return R.layout.layout_card_view
}
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
}
}
目前看起来是这样的...
我希望让它看起来像...
您还没有分享 layout_card_view.xml 但我认为这会起作用
在您的 layout_card_view.xml
中添加android:layout_gravity="center"
希望对您有所帮助
我做到了
将此代码用于 layout_card_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView
android:layout_width="96dp"
android:layout_height="128dp"
android:backgroundTint="#6060ff"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Hello world!"/>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
解决了这个问题。
在 recyclerView 体验中获得最佳效果的步骤
将
<CardView>
作为布局的父级,并将其尺寸设置为...layout_width="match_parent"
layout_height="wrap_content"
layout_margin="16dp"
try and remove this after building it to see the difference.将
<ConstraintLayout>
作为<CardView>
父级中的容器。并将其尺寸设置为...layout_width="match_parent"
layout_height="wrap_content"
P.s。不要忘记为您的 Cardview 背景和 recyclerView 背景添加对比以清楚地看到差异