Это правильный способ размещения виджетов, или это клудж?
С двумя кнопками в одном горизонтально ориентированном LinearLayout они выглядят так:
Если я добавлю виджет "Пробел" перед кнопками, чтобы LinearLayout xml был таким:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2" />
<Button
android:id="@+id/btnFetch"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/button_Fetch" />
<Button
android:id="@+id/btnCancel"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/button_Cancel" />
</LinearLayout>
... Я доволен тем, как это выглядит, с кнопками "выровнено по правому краю":
... но это ли "правильный" способ сделать это?
ОБНОВИТЬ
Во время эмуляции текст кнопки "Отмена" переносится на две строки, поэтому я добавил для него свойство "линии" и скорректировал значения весов (вместо 2, 1, 1 теперь они равны 42, 29, 29) и выглядит как раз во время эмуляции.
1 ответ
Я не знал о Space
класс, спасибо, что заметили это.
Во всяком случае, нет, я бы так не сделал.
Я стараюсь избегать добавления видов и представлений, если могу добиться того же результата с меньшими затратами.
Т.е. добавление
android:layout_margin="someValueInDP"
в контейнер кнопки.
ИЛИ (в качестве альтернативы) вы можете добавить это:
android:padding="someValueInDP"
Уменьшение количества виджетов помогает для выступлений
[РЕДАКТИРОВАТЬ]
Разница между layout_margin
а также padding
Как всем известно (ну, он / она должен), что поле является пробелом вне ВИДА / Контейнера, а отступ - пробелом ВНУТРИ.
Просто чтобы прояснить тонкую разницу.
Другими словами: установка поля сохранит цвет OUTER в качестве "космического" фона, в то время как отступ будет УВЕЛИЧИТЬ цвет LinearLayout и ITS (если он отличается от контейнера, в котором он находится).