У меня есть TableLayout, который содержит только одну строку и одну ячейку. Я хотел бы, чтобы содержимое моей ячейки было горизонтально по центру. Я попробовал два подхода:Android TableLayout и горизонтальная гравитация
Первый метод, я установил атрибут андроида: гравитация = «center_horizontal» на элементе TableRow и он работает, как ожидалось:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow android:gravity="center_horizontal">
<Button
android:id="@+id/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Hello" />
</TableRow>
</TableLayout>
Второй метод, я установил атрибут андроид: layout_gravity = «center_horizontal» непосредственно на содержание клеток (кнопка здесь), но это не центры кнопку:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow>
<Button
android:id="@+id/MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/Hello" />
</TableRow>
</TableLayout>
Может кто-нибудь объяснить мне, почему второй подход не работает?
Спасибо
Риана
Привет и спасибо за ваш ответ. В моих примерах я понимаю, почему работает первый подход. Непонятно, почему второй не удается. Атрибут layout_gravity, применяемый к кнопке, должен центрировать кнопку внутри родительского представления (TableRow) –
Я не понимаю, как это не понятно. Гравитация - для дочернего содержимого ячейки таблицы. Layout_gravity предназначен для размещения самой ячейки таблицы в ее родительском элементе. Как объяснено в ответе. – joshgoldeneagle
В моем примере Button является дочерним элементом TableRow. Когда я устанавливаю атрибут «тяжести» на TableRow, тогда он центрирует его содержимое, вот кнопка. Но когда я устанавливаю атрибут layout_gravity на Button, я ожидаю, что он также центрируется внутри своего контейнера, то есть TableRow. Я устанавливаю «тяжесть» на контейнере или установка «layout_gravity» на контент должно иметь такое же поведение. Надеюсь, я более ясен. –