Как центрировать RecyclerView по горизонтали?

#java #android #gridview #android-recyclerview

#java #Android #просмотр сетки #android-recyclerview

Вопрос:

Просто пытаюсь центрировать мой RecyclerView по горизонтали, но такие строки, как gravity: «center» или layout_centerHorizontal=»true», не работают.

Вот xml:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:context=".MainActivity">



    <androidx.recyclerview.widget.RecyclerView
        android:id="@ id/recycler_view"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"/>


</RelativeLayout>
  

И здесь код Java:

     mRecyclerView = findViewById(R.id.recycler_view);
    itemLayoutManager = new GridLayoutManager(this, 3);
    mRecyclerView.setLayoutManager(itemLayoutManager);
    ...
    mItemAdapter = new ItemAdapter(MainActivity.this, mItemList);
    mRecyclerView.setAdapter(mItemAdapter);
  

Когда я запускаю приложение, recyclerview выравнивается по левому краю.
[![изображение][1]][1]

Что именно мне нужно сделать, чтобы центрировать содержимое так, чтобы поля были одинаковыми слева и справа? Спасибо. [1]:https://i.stack.imgur.com/0LNoY.png

Ответ №1:

Это не центрируется, потому что оба layout_width совпадают с parrent попробуйте использовать wrap_content в recyclerview и layout_centerHorizontal = true также в recyclerview. Свойство Gravity предназначено для LinearLayout. Подробнее почему вы используете менеджер компоновки сетки?

Лучшее решение — сохранить этот код таким образом, а в строке, используемой для RecyclerView, установить изображение в центре строки: например

RowLayout:

 <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
   <ImageView
     android:layout_width="100dp"
     android:layout_height="100dp"
     android:layout_gravity="center_horizontal"/>
</LinearLayout>
  

Для Layout Manager используйте LinearLayoutManager, если вы не используете эти два столбца