LinearLayout - вертикально не выравнивать - PullRequest
17 голосов
/ 27 июля 2011

У меня проблема с 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 или любой другой аналогичный элемент управления, который может показать то же поведение.

Это также можно исправить в конструкторе пользовательского интерфейса, используя кнопку «Переключить выравнивание базовой линии».

Итак, полученный код:

<?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>

Ответы [ 3 ]

1 голос
/ 27 июля 2011

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

0 голосов
/ 27 июля 2011

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

0 голосов
/ 27 июля 2011

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

...