Интерфейс Android: какие варианты макетов являются взаимоисключающими? - PullRequest
3 голосов
/ 08 октября 2010

После разработки макетов в Android некоторое время, я все еще не могу освоить его.Часто результаты непредсказуемы.

Я думаю, что часть этого сводится к тому, что некоторые параметры макета не работают вместе.То есть, если вы используете один способ указания макета, вы не должны использовать другой способ.

Примечательно, что для меня изменение layout_width с fill_parent на wrap_content обычно меняет мир,Позвольте мне привести еще один конкретный пример:

Часть макета моей деятельности - LinearLayout:

    <LinearLayout android:id="@+id/ll2" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:orientation="horizontal">
        <LinearLayout android:id="@+id/ll2a" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1">
            <TextView android:id="@+id/l_cover" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:text="@string/book_item_l_cover">
            </TextView>
            <ImageButton android:id="@+id/i_cover"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:scaleType="centerInside" android:gravity="center"
                android:layout_weight="1" android:adjustViewBounds="true"
                android:src="@drawable/spinner_black_76" android:minWidth="400dip">
            </ImageButton>
        </LinearLayout>
        <LinearLayout android:id="@+id/ll2b" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1">
            <TextView android:id="@+id/l_back_cover" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:text="@string/book_item_l_back_cover">
            </TextView>
            <ImageButton android:id="@+id/i_back_cover"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:scaleType="centerInside" android:gravity="center"
                android:layout_weight="1" android:adjustViewBounds="true"
                android:src="@drawable/spinner_black_76">
            </ImageButton>
        </LinearLayout>
    </LinearLayout>

Чтобы получить 2 столбца совмещенных по левому краю комбинаций кнопок меток рядом с каждым другим, я должен былиспользуйте атрибуты layout_weight.Кнопки ImageButtons сокращаются вокруг своих изображений из-за атрибутов adjustViewBounds.Это дает мне довольно хороший результат.

Теперь, наконец, мне также хотелось иметь кнопки определенного минимального размера, чтобы палец всегда мог легко нажимать на них, даже если они не содержат изображения (и они уменьшатся до нескольких миллиметров).Я экспериментировал с настройкой android:minWidth="400dip", как вы можете видеть.Я ожидал, что кнопка заполнит всю половину экрана по ширине (400 - довольно большое значение), но я не вижу никакой разницы.

Я предполагаю, что один из других атрибутов выше препятствует minWidth от любого воздействия.И я, вероятно, мог бы пойти поэкспериментировать и отключить некоторых других, чтобы посмотреть, что это мне дает.Но мой вопрос здесь таков: Кто-нибудь имеет какую-либо (логическую) информацию о том, какой атрибут предотвращает или противоречит интуитивно понятному? Я бы хотел отсортировать это раз и навсегда.Это где-то задокументировано?

1 Ответ

2 голосов
/ 16 ноября 2010

Я заметил, что layout_weight, по-видимому, делает minWidth бесполезным.

Учитывая три кнопки в линейном расположении, с весом левого и правого к 0 и центром к 1, изменение minWidth любого из них не имеет абсолютно никакого влияния на способ визуализации представления, пока я не удалю атрибуты layout_weight полностью для каждой кнопки. Я даже убедился, что сумма всех значений minWidths меньше общей ширины вида.

Понятия не имею, почему это так. Документация относительно layout_weight:

Этот атрибут присваивает "важность" значение для представления, и позволяет ему разверните, чтобы заполнить оставшееся пространство в родительский вид. Детские взгляды могут указать целочисленное значение веса и тогда любое оставшееся пространство в представлении группа назначается детям в пропорция их заявленного веса

Мне бы очень хотелось узнать, какие другие параметры макета конфликтуют друг с другом. Мне кажется очень не интуитивным, что определение веса для представления, чтобы заполнить «оставшееся пространство в родительском представлении» полностью игнорировало бы настройки minWidth представления.

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