Проблемы с выравниванием макета Android

1

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

| button       text       button |

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

|        buttontextbutton        |

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

| button text buttonnnnnnnnnnnnn |

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

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

Теги:
android-layout

3 ответа

3
Лучший ответ

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

android:layout_weight="1"

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

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

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

  • 0
    Вау ..... это как волшебство. Только вероятно, что это немного растягивает мои ImageButtons.
  • 0
    И я думаю, было бы полезно узнать, КАК это работает, поскольку я, вероятно, захочу использовать его в будущем.
Показать ещё 2 комментария
0

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

0

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

<TableLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:stretchColumns="0,1,2">

Ещё вопросы

Сообщество Overcoder
Наверх
Меню