К сожалению, GridView
- сложная схема, которой можно манипулировать, чтобы получить внутренние представления, чтобы соответствовать определенному размеру, как вы пытаетесь. Я думаю, что более уместно рассматривать GridView
как расширенный ListView
для отображения прокручиваемых списков переменной длины, таких как миниатюры в фотоальбоме, в отличие от «сетки». Я начал этот путь, когда изначально хотел создать сетку фиксированного размера для игры, но на самом деле это совсем не подходящее расположение.
Поскольку ваша сетка всегда состоит из 8 ячеек, я мог бы предложить вместо этого использовать вложенные LinearLayout
с (или, если вы не хотите, чтобы все ячейки имели одинаковый размер, более сложная комбинация TableLayout
/ TableRow
):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1.0" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0.5"
android:orientation="horizontal"
android:weightSum="1.0" >
<!-- Drop in 4 items here with layout_weight of 0.25 -->
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0.5"
android:orientation="horizontal"
android:weightSum="1.0" >
<!-- Drop in 4 items here with layout weight of 0.25 -->
</LinearLayout >
</LinearLayout >
Это создаст фиксированную сетку 2x4, которая всегда точно заполняет экран.