Макеты Android: TableView - PullRequest
       15

Макеты Android: TableView

0 голосов
/ 17 декабря 2011

Может кто-нибудь сказать мне, как сделать мой образец ниже

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:layout_height="wrap_content" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#300000"
        android:textColor="#ff0000"
        android:text="Sample Layout"/>
    </LinearLayout>
    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <TableRow>
    <Button
        android:layout_column="1"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    <Button
        android:layout_column="2"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    <Button
        android:layout_column="3"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    </TableRow>
    <TableRow>
    <TextView
        android:layout_column="1"
        android:layout_height="wrap_content"
        android:padding="2dip"
        android:text="News Feed"/>
    <TextView
        android:layout_column="2"
        android:layout_height="wrap_content"
        android:text="Profile"
        android:padding="2dip"/>
    <TextView
        android:layout_column="3"
        android:layout_height="wrap_content"
        android:text="Friends"
        android:padding="2dip"/>
    </TableRow>
    <TableRow>
    <Button
        android:layout_column="1"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    <Button
        android:layout_column="2"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    <Button
        android:layout_column="3"
        android:layout_height="wrap_content"
        android:background="@drawable/icon"
        android:padding="2dip"/>
    </TableRow>
    <TableRow>
    <TextView
        android:layout_column="1"
        android:layout_height="wrap_content"
        android:text="Messages"
        android:padding="5dip"/>
    <TextView
        android:layout_column="2"
        android:layout_height="wrap_content"
        android:text="Places"
        android:padding="5dip"/>
    <TextView
        android:layout_column="3"
        android:layout_height="wrap_content"
        android:text="Groups"
        android:padding="5dip"/>
    </TableRow>
    </TableLayout>
</LinearLayout>

My layout

больше похоже на целевой пример ниже. Кажется, что заполнение работает не так, как ожидалось, и я также думаю, что необходимо центрировать полную таблицу. Может ли кто-нибудь помочь мне понять, что происходит не так? И что мне нужно изменить, чтобы соответствовать целевой макет (3х2 вместо 3х3)? Спасибо.

Target Layout

1 Ответ

2 голосов
/ 17 декабря 2011

Используйте ImageButton вместо Button и используйте вложенные LinearLayout в каждой ячейке таблицы для правильного центрирования текста под каждой кнопкой:

<TableRow>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <ImageButton
            android:layout_gravity="center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:src="@drawable/icon" />
        <TextView
            android:layout_gravity="center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dip"
            android:text="News Feed"/>
    </LinearLayout>

    <LinearLayout>
        ...
    </LinearLayout>
</TableRow>

Обратите внимание android:layout_gravity="center_horizontal", который центрирует ваше представление горизонтально в родительском представлении. Этот код может потребовать некоторых улучшений, но это общая идея, которой вы должны следовать (используйте layout_gravity, вложенные макеты и ImageButtons).

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

<TableLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:stretchColumns="*" >
...