Подтвердить что ты не робот

LinearLayout - вертикально не выровнять

У меня возникла проблема с LinearLayout на Android. У меня четыре кнопки. Каждая кнопка имеет фиксированный размер, но текст может меняться по длине.

Моя проблема в том, что они не совпадают с вершиной каждого. Они видели, что они совпадают с верхней частью текста внутри каждого бэттона, который изменяется в зависимости от количества строк внутри кнопки (см. Рисунок).

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>

http://i.imgur.com/0Kj8h.png

РЕДАКТИРОВАТЬ: ОТВЕТ (не может ответить на мой собственный вопрос):

Хорошо, я просто нашел ответ сам. Вы должны добавить android: baselineAligned = "false" в LinearLayout или любой другой подобный элемент управления, который может показывать одно и то же поведение.

Вы также можете исправить это в дизайнеру пользовательского интерфейса, нажав кнопку "Toggle Baseline Alignment".

Таким образом, полученный код:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>
4b9b3361

Ответ 1

лучше использовать RelativeLayout для такого типа выравнивания, поскольку концепция RelativeLayout говорит, что это "ссылка" элемента управления

Ответ 2

Ну, ваш второй линейный макет - это то, что создает проблему, которую я предполагаю для u, просто удалите это

Ответ 3

Вы можете использовать TableLayout вместо второго LinearLayout. И добавьте TableRow внутри TableLayout, а в строке добавьте четыре кнопки