Ваш GridLayout должен быть таким ..
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/templatelandscape"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<GridView
android:id="@+id/commandsbarlandscape"
android:background="@android:color/darker_gray"
android:layout_gravity="center_horizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:numColumns="auto_fit"
android:columnWidth="52dp"
android:stretchMode="none"
android:gravity="fill_horizontal" />
Я просто помещаю android: layout_gravity = "center_horizontal" в родительский макет, чтобы он устанавливал gridlayout в своем родительском центре, а не его содержимое в центре, как вы хотите.
Также добавлен android: layout_width = "0dp", поскольку он равен свойству "" warp_content ", если вы дадите" 0dp ", он покажет вам лучший результат.
Я также удалил те относительные атрибуты макета, которые вы добавили, которые вы можете наблюдать, если вы не используете RelativeLayout, то бессмысленно использовать те свойства, которые ничего не делают.
В целях тестирования вы можете проверить, работает ли он правильно или нет, просто используя следующий код xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/templatelandscape"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<GridView
android:id="@+id/commandsbarlandscape"
android:background="@android:color/darker_gray"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:numColumns="auto_fit"
android:columnWidth="52dp"
android:stretchMode="none"
android:gravity="fill_horizontal" />
</LinearLayout>
Приведенный выше xml показывает, что макет вашей сетки находится в центре родительского элемента, а не его содержимого.
Надеюсь, это объяснение работает для вас ...