Как настроить ширину переключателей для изменения размера экрана? (Андроид) - PullRequest
3 голосов
/ 23 ноября 2010

У меня есть эти переключатели, и им нужны android:width="X" и android:height"X", однако я не знаю, как установить эти свойства, чтобы они адаптировались к другому размеру экрана.

Вот код, который я использую для своих кнопок:

    <RadioGroup android:layout_width="fill_parent"
        android:layout_height="50px" android:orientation="horizontal"
        android:checkedButton="@+id/first" android:id="@+id/states">

                <RadioButton android:id="@+id/first"
                    android:background="@drawable/button_radio" android:width="50px"
                    android:height="50px" />

                <RadioButton android:id="@+id/second"
                    android:background="@drawable/button_radio" android:width="50px"
                    android:height="50px" />

                <RadioButton android:id="@+id/third"
                    android:background="@drawable/button_radio" android:width="50px"
                    android:height="50px" />

                <RadioButton android:id="@+id/fourth"
                    android:background="@drawable/button_radio" android:width="50px"
                    android:height="50px" />

                <RadioButton android:id="@+id/fifth"
                    android:background="@drawable/button_radio" android:width="50px"
                    android:height="50px" />

    </RadioGroup>

Я попытался поместить радио-кнопки в строку таблицы, но тогда они не работают должным образом. Когда я щелкаю один, он выбирает его, но не отменяет выбор, когда я щелкаю другой.

Я пытался заменить android:width на android:layout_width, но тогда они не отображаются.

Я также пытался использовать dip, но затем кнопки не появлялись.

Я должен также добавить, что я использую drawables вместо стандартных радио-кнопок. Я не знаю, будет ли это иметь значение, но все рисунки одинакового размера (50 х 50 х).

Кто-нибудь знает, как я могу установить их высоту и ширину, чтобы они настраивались на разные размеры экрана?

Ответы [ 2 ]

8 голосов
/ 24 ноября 2010

Я бы предложил вам попробовать следующее с вашей радиогруппой:

            <RadioButton android:id="@+id/first"
                android:background="@drawable/button_radio" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weight=1 />

            <RadioButton android:id="@+id/second"
                android:background="@drawable/button_radio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weight=1 />

            <RadioButton android:id="@+id/third"
                android:background="@drawable/button_radio" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weight=1 />

            <RadioButton android:id="@+id/fourth"
                android:background="@drawable/button_radio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weight=1 />

            <RadioButton android:id="@+id/fifth"
                android:background="@drawable/button_radio"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weight=1 />

</RadioGroup>

Таким образом, все ваши радиокнопки будут занимать одинаковое пространство.Кроме того, он будет меняться в зависимости от размера экрана.

8 голосов
/ 23 ноября 2010

Установите высоту и ширину, используя dp вместо px. Смотрите ответ на этот пост для получения дополнительной информации о единицах. В чем разница между "px", "dp", "dip" и "sp" на Android?

Я бы также предложил вам ознакомиться с документацией Android по поддержке нескольких экранов.

Ладно, я воспользовался моментом, чтобы привести быстрый пример, ориентированный на Android 1.5.

Вы можете найти источник здесь .

Короче говоря, вам нужно предпринять следующие шаги:

Поместите ваши изображения в res/drawable. У вас должно быть как минимум 4 иконки: нажата и не отмечена, нажата и проверена, не нажата и не проверена, не нажата и проверена

Создание макета типа selector в res / drawable. Вот мой:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="true" android:state_pressed="false"
     android:drawable="@drawable/radio_on"/>
  <item android:state_checked="false" android:state_pressed="false"
     android:drawable="@drawable/radio_off"/>
  <item android:state_checked="true" android:state_pressed="true"
     android:drawable="@drawable/radio_on_pressed"/>
  <item android:state_checked="false" android:state_pressed="true"
     android:drawable="@drawable/radio_off_pressed"/>
</selector>

Затем настройте RadioGroup так:

<RadioGroup android:layout_width="fill_parent"
   android:layout_height="50dp"
   android:orientation="horizontal"
   android:checkedButton="@+id/first">
   <RadioButton android:id="@+id/first"
      android:width="50dp"
      android:height="50dp"
      android:button="@drawable/button_radio"/>
   <RadioButton android:id="@+id/second"
      android:width="50dp"
      android:height="50dp"
      android:button="@drawable/button_radio"/>
   <RadioButton android:id="@+id/third"
      android:width="50dp"
      android:height="50dp"
      android:button="@drawable/button_radio"/>
   <RadioButton android:id="@+id/fourth"
      android:width="50dp"
      android:height="50dp"
      android:button="@drawable/button_radio"/>
</RadioGroup>

Я указал размер 50dp, так как размер моих элементов рисования составляет 50px x 50px. Также обратите внимание, что я устанавливаю android:button, а не android:background.

Вот подписанный APK проекта выше: Custom RadioButton (Примечание: он предназначен для SDK версии 4, поэтому не будет запрашивать разрешения SD и телефона)

Это должно дать следующий результат: Image of Custom RadioButton

Надеюсь, это поможет.

...