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

С двумя кнопками в одном горизонтально ориентированном 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 (если он отличается от контейнера, в котором он находится).

Другие вопросы по тегам