Меню значков с TableView (как в Google+) - PullRequest
2 голосов
/ 17 октября 2011

Я работаю над значком главного меню для моего приложения Android (см. Прикрепленное изображение - Google+). Очевидная схема для этого - TableLayout.

Google+ Android App

Однако я понятия не имею и не смог найти информацию о том, как центрировать саму таблицу и значки внутри. Код, который я придумал, выглядит следующим образом (и в результате изображение находится под кодом):

<TableLayout android:layout_width="fill_parent" android:id="@+id/tableLayout1" android:layout_height="fill_parent" android:stretchColumns="1" android:padding="20dp">
    <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="20dp"  >
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></Button>
    </TableRow>
    <TableRow android:id="@+id/tableRow2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="20dp" >
        <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" ></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></Button>
    </TableRow>
</TableLayout>

TableLayout

Буду признателен за любые советы и идеи.

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Я только что сделал главное меню программы, как вам нужно. Он не зависит от плотности, но я поместил его в прокрутку, чтобы убедиться, что он может использоваться везде. Вы можете изменить кнопки на кнопки изображений, если хотите, чтобы вы получили нужное меню.

Небольшое пояснение к коду:

  • каждая строка имеет текстовое представление слева и справа в качестве заполнителей. Tablelayout'a android: stretchColumns = "0,3" растягивает текстовые представления, чтобы заполнить пространство рядом с кнопками.
  • Вы можете изменить поля, чтобы кнопки были ближе или дальше друг от друга.

А теперь вот xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableLayout android:layout_gravity="center" 
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:stretchColumns="0,3">
        <TableRow android:layout_gravity="center">
            <TextView />
            <Button android:text="1" android:layout_margin="15dp"
                android:layout_gravity="center_vertical"
                android:width="100dip" android:height="100dip" />
            <Button android:layout_gravity="center_vertical" 
                android:text="2" android:layout_margin="15dp"
                android:width="100dip" android:height="100dip" />
            <TextView />
        </TableRow>

        <TableRow android:layout_gravity="center">
            <TextView />
            <Button android:text="3"  android:layout_margin="15dp"
                android:layout_gravity="center_vertical"
                android:width="100dip" android:height="100dip" />
            <Button android:text="4"  android:layout_margin="15dp"
                android:layout_gravity="center_vertical"
                android:width="100dip" android:height="100dip" />
            <TextView />
        </TableRow>

        <TableRow android:layout_gravity="center">
            <TextView />
                <Button android:text="5"  android:layout_margin="15dp"
                android:layout_gravity="center_vertical"
                android:width="100dip" android:height="100dip" />
            <Button android:text="6"  android:layout_margin="15dp"
                android:layout_gravity="center_vertical"
                android:width="100dip" android:height="100dip" />
            <TextView />
        </TableRow>
    </TableLayout>
</ScrollView>

А вот так это выглядит: http://db.tt/yQ5NFhmk

0 голосов
/ 17 октября 2011

попробуйте android:gravity="center" в спецификации TableLayout. Это поместит строки таблицы в центр экрана.

также попробуйте добавить android:gravity="center" в TableRow для размещения кнопок в центре строки таблицы.

...