Как централизовать последний неровный ряд в GridView в Android?

У меня есть GridView, который отображает картинки алфавитов, что происходит, каждый раз, когда в последнем ряду меньше алфавитов. и последний ряд выровнен по левому краю, что выглядит не очень хорошо, поэтому я хочу сделать последний ряд в центре, любое предложение

мой GridView код:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view"
    android:layout_width="fill_parent"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:columnWidth="70dp"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="20dp"
    android:gravity="center"
    android:stretchMode="spacingWidthUniform" >  

</GridView>

3 ответа

У меня та же проблема, но я справился с этим, используя два вида сетки, при этом первый вид сетки отображал строки, кроме последней строки, а второй вид сетки отображал последнюю строку. Это самый простой способ добиться того, что мне нужно. Я не нашел лучшего решения. С нетерпением жду, чтобы увидеть хороший и простой способ тоже.

Вы можете попробовать использовать невидимые элементы, это не самое эффективное решение, но простое, вы можете поместить два элемента, один в начале, один в конце строки и сделать их невидимыми

Для тех, кто все еще ищет решение для этого, вот мой взгляд на это, создайте TableLayout и для каждого TableRow установить его вес android:weightSum="4" и не забудьте добавить android:gravity="center"

Для полного кода проверьте эту суть для справки.

Вы можете центрировать строку сетки внутри относительного макета, а затем добавить android:layout_centerHorizontal="true" в алфавит ImageView"S. Предполагая, что они ImageView"S.

Так что ваши GridView будет обернут во что-то вроде этого:

<RelativeLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_cotent"
    android:orientation="horizontal" >

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_view"
        android:layout_width="fill_parent"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:columnWidth="70dp"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="20dp"
        android:gravity="center"
        android:stretchMode="spacingWidthUniform" >  

    </GridView>
</RelativeLayout>

И отдельные изображения алфавита потребуется android:layout_centerHorizontal="true" как это:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
</ImageView>
Другие вопросы по тегам