2010-11-23 4 views
3

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

Вот код, я использую для моих кнопок:

<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 пикселей x 50 пикселей).

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

ответ

7

Установите высоту и ширину, используя dp вместо px. См. Ответ на этот пост для получения дополнительной информации об устройствах. What is the difference between "px", "dp", "dip" and "sp" on Android?

Я также предлагаю вам ознакомиться с андроидом documentation на несколько экранов.

Хорошо, поэтому я потратил немного времени, чтобы взломать быстрый пример, ориентированный на Android 1.5.

Вы можете найти source here.

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

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

Создание макета selector типа в Рез/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 вводимого коэффициента х 50px. Также обратите внимание, что я устанавливаю android:button, а не android:background.

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

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

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

+0

Извините, я должен был сказать, что я пробовал окунуться, но тогда кнопки не показывались. Я добавлю это к OP. Я также добавлю, что вместо стандартных кнопок я использую drawables. – NotACleverMan 2010-11-23 18:20:30

+1

Если ваши кнопки являются фактическими изображениями, создайте 3 разных версии и поместите их в папки `res/drawable-ldpi`,` res/drawable-mdpi`, `res/drawable-hdpi`. Почему вы определяете размер пикселя? – Thomas 2010-11-23 18:22:08

8

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

  <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> 

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

Смежные вопросы