Как правильно центрировать GridView?

Я пытался и пытался, и не повезло. Мне повезло со всеми другими ответами здесь, связанными с центрированием GridView, а также не повезло. Это мой GridViewxml:

<GridView
        android:id="@+id/calendar_grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="7"
        android:columnWidth="40dp"
        android:verticalSpacing="1dp"
        android:horizontalSpacing="1dp"
        android:paddingTop="2dp"
        android:stretchMode="columnWidth"
        android:layout_gravity="right"
        android:gravity="right"
        android:background="#696969" ></GridView>

Я пробовал все комбинации, какие только мог придумать, но мало что сработало. По крайней мере, это не соответствует между устройствами. Это образ того, что он всегда делает.

enter image description here

Как вы можете видеть в правой части GridView, есть интервал. Я пытаюсь постоянно это менять, и это почти никогда не работает. Использование android:stretchModeменяет его, но искажает расстояние между ячейками, так что это не работает. Как видите, использование Gravity также не работает. Я пробовал все другие значения для него, и это все равно ничего не меняет. Он застрял слева. Я также нахожу странным, что попытка изменить размер android:columnWidthменьше 40 тоже ничего не дает. И когда я увеличиваю 40 до 45, тоже ничего не меняется. Но если изменить его на 50, пробел справа исчезнет. Но когда я помещаю его на свой телефон, интервал есть!Я пропустил это 2 недели назад, чтобы продолжить работу над другими вещами, но, похоже, мне еще предстоит решить эту проблему или даже понять, почему ничего из того, что я пытаюсь, не работает.

Если это поможет кому-нибудь помочь мне здесь, я также могу предоставить XML для того, что делает ячейки. Но я не уверен, имеет ли это значение. Но вот:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:id="@+id/day_num"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="10dp"
        android:background="#000000"
        android:height="35dp"
        android:gravity="center_vertical|center_horizontal" />


</LinearLayout>

Если это поможет, родителем GridViewявляется LinearLayoutс этим:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="0"
    android:gravity="center" >

Существует также родственный элемент с весом 1, но я не думаю, что это должно влиять, поскольку вес 0 заставляет эту часть сначала устанавливать свое пространство.

РЕДАКТИРОВАТЬ:

Так что я продолжал играть с этим, очень раздраженный, тем более, что не так много людей, кажется, имеют эту проблему, но похоже, что независимо от того, насколько маленьким я делаю columnWidth, GridView почти не становится меньше. На самом деле, тот же разрыв, который вы видите, остается на том же уровне, пока я не дойду до 50dp. Но когда я перехожу в портретный режим, разрыв снова появляется, поэтому я поднимаю его до 90dp (, я пробовал под этим, ничего не менял ), и он исчезает. Странно то, что GridViewне меняется, кроме заполнения пробела. Так что я мог бы сделать его 200dp, и он идеально смотрелся бы на моем экране и на любом другом меньшем экране. Как только я перейду на планшет, я подозреваю, что мне нужно будет увеличить это значение, но дело в том, что это странное поведение. Кто-нибудь сталкивался с этим?

9
задан Andy 19 July 2012 в 07:22
поделиться