Как вывести CardView по центру?
В программе использую RecyclerView. Написал для него адаптер. ViewHolder содержит CardView с картинкой внутри. Мне нужно выводить эти CardView в две колонки, вертикально. Для этого GridLayoutManager с двумя колонками. Всё работает. Но мне нужно, чтобы CardView выводились колонках по центру, у меня CardView прижимаются к левому краю. Подскажите, как отцентрировать CardView внутри RecyclerView с использованием 2-х колонок GridLayoutManager?
это разметка элемента RecyclerView
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewPerson"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_marginTop="10dp"
app:cardCornerRadius="16dp"
app:cardElevation="8dp">
<ImageView
android:id="@+id/imageViewPerson"
android:layout_width="120dp"
android:layout_height="120dp"
android:scaleType="centerCrop"
android:src="@drawable/im1" />
</androidx.cardview.widget.CardView
Это разметка активити с RecyclerView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FragmentStudent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewPersons"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Это код подключения recyclerView
RecyclerView recyclerViewPersons = view.findViewById(R.id.recyclerViewPersons);
ArrayList<Person> setPersons = new SetPersons().getArrayPersons();
RecyclerView.Adapter adapterPerson = new AdapterPersons(setPersons, getContext());
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
recyclerViewPersons.setAdapter(adapterPerson);
recyclerViewPersons.setLayoutManager(gridLayoutManager);
CardView прижаты к левому краю
Ответы (1 шт):
Очень сложно понять что именно вам нужно, без вашей разметки. Но я все же попробую вам интуитивно помочь. Создал разметку для элемента списка:
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_height="wrap_content">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@color/colorAccent" />
</com.google.android.material.card.MaterialCardView>
и вот результат:
то есть то что вам нужно спрятано в этой строке:
android:layout_gravity="center_vertical|center_horizontal"

