Как я могу установить высоту ячейки GridView в зависимости от высоты экрана? - PullRequest
8 голосов
/ 25 февраля 2011

В моем макете у меня только восемь ячеек.
Я хочу, чтобы ячейка разделяла все пространство, доступное на экране.Это возможно?

Это мой макет gridview:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dataGrid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10px"
    android:verticalSpacing="10px"
    android:horizontalSpacing="10px" 
    android:numColumns="2"
    android:gravity="fill" />

И это макет элемента:

<?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:padding="6dip"  >   
  <TableRow
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
      <TextView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="#E00000"
          android:textStyle="bold"
          android:gravity="left"
          android:textSize="16dip"/>    
      <TextView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="#000000"
          android:textStyle="normal"
          android:gravity="right"
          android:textSize="12dip"/>
    </LinearLayout>
  </TableRow>
</LinearLayout>

Ответы [ 3 ]

1 голос
/ 19 октября 2012

К сожалению, 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, которая всегда точно заполняет экран.

0 голосов
/ 09 февраля 2012

Вы должны попробовать [android: stretchMode] [1]

[1]: http://developer.android.com/reference/android/widget/GridView.html#attr_android:stretchMode: определяет, как столбцы должны растягиваться, чтобы заполнить доступное пустое пространство, если оно есть.

0 голосов
/ 26 февраля 2011

Во-первых, используйте PS вместо PX.Это позволит масштабировать его до разных устройств DPI.

Во-вторых, чтобы получить равные размеры каждой ячейки, можно поместить tableView в каждую ячейку, которая содержит четкое изображение.Установите размер изображения с помощью PS (не px).Табличное представление должно позволять вам размещать объекты макетов в каждой ячейке, а четкое изображение должно сохранять все ячейки одинакового размера.

Я бы также удалил любые отступы.

Дайте нам знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...