Как определить размер компонентов Android в соответствии с размером изображения с использованием XML - PullRequest
4 голосов
/ 10 февраля 2009

Я создал пользовательскую панель значков в Android, используя создатель макета XML, используя RadioGroup в LinearLayout (XML включен ниже). Каждая кнопка RadioButton в RadioGroup имеет свой собственный чертеж (с отмеченными и непроверенными состояниями) в качестве атрибута android:button.

Линейный макет находится внутри RelativeLayout, поэтому он может отображаться в произвольной позиции на экране (в данном случае в качестве боковой панели).

Ширина рисования составляет 55 пикселей, а атрибут android:layout\_width всех этих представлений равен wrap\_content.

Когда я делаю этот компонент видимым, выровненным по левому нижнему краю экрана, видимы только около трех четвертей ширины изображения RadioButton. Установка layout\_width для RelativeLayout на fill\_parent исправляет это и приводит к появлению полной кнопки.

Однако это означает, что группа кнопок потребляет события нажатия по всей ширине экрана.

Как сделать так, чтобы кнопка полностью отображалась, и только область кнопки реагирует на нажатия? Жесткое кодирование ширины выдвижного элемента не является особенно желательным решением.

<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/LinearLayout01" android:visibility="invisible">
        <RadioGroup android:id="@+id/RadioGroup01" android:layout_height="wrap_content" android:checkedButton="@+id/RB01" android:layout_width="fill_parent">
            <RadioButton android:id="@+id/RB01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR01"/>
            <RadioButton android:id="@+id/RB02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR02"/>
            <RadioButton android:id="@+id/RB03" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR03"/>
            <RadioButton android:id="@+id/RB04" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR04"/>
        </RadioGroup>
    </LinearLayout>
    </RelativeLayout>

Ответы [ 2 ]

7 голосов
/ 19 февраля 2009

Установка ширины LinearLayout, RadioGroup или RadioButton в dp (пиксели, не зависящие от плотности) может работать для вас. Исходя из того, что вы сказали выше, я думаю, что это должна быть ширина макета. Размеры «жестко закодированы», но они будут масштабироваться в зависимости от размера вашего экрана.

Так что xml может выглядеть так:

android:layout_width="55dp"

Официальная документация для dps здесь

1 голос
/ 28 апреля 2012

Не могу представить, почему в другом ответе 6 голосов, это совершенно неправильно

Размеры «жестко закодированы», но они будут масштабироваться в соответствии с размером вашего экрана.

Нет они будут масштабироваться в зависимости от плотности вашего экрана. Мне бы очень хотелось, чтобы мы могли использовать проценты из XML, а не кодировать их.

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