Android TableLayout растягивает содержимое ячейки - PullRequest
2 голосов
/ 13 октября 2011

Вот проблема.

Я создаю TableLayout, содержащий несколько кнопок ImageButtons.

Каждая строка имеет 3 кнопки ImageButton, но их ширина не равна ширине таблицы.То же самое относится и к их высоте.

Все, что я хочу сделать, это центрировать ImageButtons внутри ячейки, в которой они находятся.

auto:StretchColumns="*"

растягивает ImageButtons (данные ячеек), даже я указал их размер в файле XML.

Кроме того, есть ли варианты сделать то же самое для строк?

Что-то вроде автоматического вычисления полей ячеек.

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Вы пытались установить android:layout_gravity="center" для кнопок изображения?

Кроме того, вы можете обернуть каждую ImageButton в LinearLayout следующим образом:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
   <ImageButton android:layout_gravity="center" ...other attributes... />
</LinearLayout>
1 голос
/ 13 октября 2011

дочерние элементы таблицы не обязательно должны быть только TableRow. Макет таблицы поддерживает дочерние элементы всех типов, включая LinearLayout, TextView, ImageButton и т. Д.

Не заключайте кнопку изображения в TableRow. Вставьте его как строку.

<TableRow>
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example Table Row" />
</TableRow>

<ImageButton
    android:id="@+id/ib1"
    android:layout_width="fill_parent" <---! The Parent Is The Table Layout !--->
    android:layout_height="wrap_content"
    android:background="@drawable/coolBGImage" />

<TableRow>
BLAH BLAH BLAH
</TableRow>

Чтобы поместить 3 кнопки изображения в один ряд, используйте LinearLayout с android:orientation="horizontal"

</TableRow>

<LinearLayout
    android:id="@+id/LL1"
    android:layout_width="fill_parent"  <---! The Parent is the TableLayout !--->
    android:layout_height="wrap_content"
    android:orientation="horizontal">

        <ImageButton
            android:id="@+id/IB1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/coolBGImage1"
            android:weight="1" />

Добавьте следующие две кнопки изображения с одинаковым весом, чтобы кнопки равномерно разделяли строку.

</LinearLayout>
...