Проблемы с выравниванием макета Android - PullRequest
1 голос
/ 17 января 2011

Итак, я пытаюсь, чтобы мой макет выглядел следующим образом:

| button       text       button |

Так, чтобы текст располагался по центру между моими двумя кнопками.Сначала я попытался использовать теги LinearLayouts и layout_gravity, но это дало бы что-то вроде:

|        buttontextbutton        |

, и теперь у меня есть относительный макет с тегами alignParentLeft / Right и centerInParent, но теперь макет выглядит как

| button text buttonnnnnnnnnnnnn |

Есть ли способ сделать мой макет правильным с текстом, который изменяет длину?

Спасибо, Джейк

Ответы [ 3 ]

3 голосов
/ 17 января 2011

Используйте линейный макет с настройкой горизонтальной ориентации. Удалите все настройки гравитации / выравнивания. Далее используйте строку

android:layout_weight="1"

в обеих кнопках и в текстовом виде. Это должно дать вам то, что вы хотите.

Редактировать: Вы спросили, как это работает. Это из документа разработчика

LinearLayout также поддерживает назначение вес для отдельных детей. это атрибут присваивает «важность» значение для представления, и позволяет ему разверните, чтобы заполнить оставшееся пространство в родительский вид. Детские взгляды могут указать целочисленное значение веса и тогда любое оставшееся пространство в представлении группа назначается детям в пропорция их заявленного веса. Вес по умолчанию равен нулю. Например, если есть три текстовых поля и два из них объявить вес 1, а другой не имеет веса (0), третье текстовое поле без веса не будет расти и будет занимать только площадь требуется по своему содержанию. Другие два будет расширяться в равной степени, чтобы заполнить пространство оставшиеся после всех трех ящиков измеряется. Если третье поле учитывая вес 2 (вместо 0), тогда это теперь объявлено "больше важнее, чем оба других, поэтому получает половину всего оставшегося пространства, в то время как первые два разделяют остальное в равной степени.

0 голосов
/ 17 января 2011

Я бы посоветовал вам попробовать <TableLayout> для этого. Убедитесь, что в вашем случае установлено android:stretchColumns="0,1,2".

<TableLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:stretchColumns="0,1,2">
0 голосов
/ 17 января 2011

Вы должны быть в состоянии сделать это с LinearLayout очень хорошо. Попробуйте это:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1"
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView Centered"
        android:gravity="center"
        android:layout_weight="1"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 2"
        />
</LinearLayout>

Я не уверен, что атрибут layout_weight даже необходим в этом случае. Вы можете попробовать это с или без, но это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...