Использование setGravity() в GridView
Я не могу понять использование Android: гравитация и setGravity() GridView.
android:gravity
Определяет гравитацию внутри каждой клетки.
center_horizontal - Поместить объект в горизонтальный центр его контейнера, не меняя его размера.
setGravity(int gravity)
Установите гравитацию для этой сетки. Гравитация описывает, как дочерние виды выровнены по горизонтали. По умолчанию Gravity.LEFT
Гравитация int: сила тяжести, чтобы применить к детям этой сетки
Я пытаюсь центрировать последний ряд, как упомянуто в этом вопросе, но я не могу получить это.
Итак, я попытался понять использование android:gravity
а также setGravity()
,
Я попробовал этот код.
<GridView
android:id="@+id/grid_view"
android:stretchMode="none"
android:numColumns="auto_fit"
android:columnWidth="140dp"
android:gravity="right"
android:layout_width="match_parent"
android:layout_height="match_parent" />
его дочерний вид
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/chapter_item_layout"
android:minHeight="120dp"
android:background="@color/red">
<ImageView
android:id="@+id/thumbnail_image"
android:layout_width="68dp"
android:layout_height="68dp"
android:scaleType="fitXY"
android:src="@drawable/icon" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="16sp"
android:textColor="@color/black"
android:maxLines="2"
android:ellipsize="end"
android:id="@+id/title" />
</LinearLayout>
и вот так
если поменял stretchMode="columnWidth"
и вот так
- Первое изображение обозначает, что дочерние строки не выровнены вправо.
- Второе изображение, обозначающее, что содержимое внутри ребенка не выравнивается вправо
Тогда какой смысл устанавливать гравитацию?
Я старался gridView.setGravity(Gravity.CENTER)
,
Мне нужно отобразить динамические элементы в GridView.
Как я могу отобразить 3-й предмет в центре, если у меня есть 3 предмета?
Я пробовал настройку layout_width="wrap_content"
и помещаю мой GridView внутрь
- LinearLayout и настройка
layout_gravity:center
- RelativeLayout и настройка
layout_centerInParent=true
Оба случая не сработали.
Я не могу использовать TableLayout
потому что мне нужно загрузить больше данных при прокрутке вниз, поэтому мне нужно установить OnScrollListener
заранее спасибо
1 ответ
Положить ваши GridView
внутри RelativeLayout
а затем установить GridView
"s layout_centerInParent
собственность на true
,
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/grid_view"
android:stretchMode="columnWidth"
android:numColumns="2"
android:columnWidth="140dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
</RelativeLayout>
Так как:
RelativeLayout
дает вам гораздо лучший контроль над позициями детей.
Обновить:
Попробуйте изменить это два свойства
android:stretchMode="columnWidth"
android:numColumns="2"
Удалите это свойство, если вы добавите в GridView
android:gravity="right"
,