Итак, я пытаюсь заставить свой макет выглядеть так:
| button text button |
Чтобы текст был центрирован между двумя моими кнопками. Сначала я попытался использовать теги LinearLayouts и layout_gravity, но это дало бы мне что-то вроде:
| buttontextbutton |
и теперь у меня есть относительный макет с тегами alignParentLeft/Right и centerInParent, но макет теперь выглядит как
| button text buttonnnnnnnnnnnnn |
Есть ли способ получить мой макет правильно с текстом, который изменяет длину?
Спасибо, Джейк
Используйте линейную компоновку с настройкой горизонтальной ориентации. Удалите настройки гравитации/выровнения. Затем используйте строку
android:layout_weight="1"
в обеих кнопках и в тексте. Это должно дать вам то, что вы хотите.
Изменить: вы спросили, как это работает. Это из документа doc
LinearLayout также поддерживает назначение вес для отдельных детей. Эта атрибут присваивает "важность" значение для представления и позволяет ему для заполнения любого оставшегося пространства в родительский вид. Виды детей могут указать значение целочисленного веса и то любое оставшееся пространство в представлении группа назначается детям в доля их объявленного веса. Вес по умолчанию равен нулю. Например, если есть три текстовых поля и два из них объявляют вес 1, тогда как другой не имеет веса (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 необходим в этом случае. Вы можете попробовать это с или без, но это должно сделать трюк.
Я предлагаю вам попробовать <TableLayout>
для этого. Убедитесь, что вы установили android:stretchColumns="0,1,2"
в свой случай.
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2">