Можно ли изменить значок переключателя в группе переключателей Android? - PullRequest
91 голосов
/ 26 августа 2010

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

Можно ли поменять значок переключателя? Например, возможно ли создать пользовательский макет для каждой строки, и в этом макете укажите свой значок и измените шрифт и др.

Ответы [ 5 ]

163 голосов
/ 26 августа 2010

Да, возможно, вы должны определить свой собственный стиль для радио-кнопок, в res / values ​​/ styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme">
   <item name="android:radioButtonStyle">@style/RadioButton</item>
</style>
<style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
   <item name="android:button">@drawable/radio</item>
</style>
</resources>

здесь «radio» должно быть отображаемым с учетом состояния, radio.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_window_focused="false"
        android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="false" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/radio_normal_off" />
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" />
    </selector>

Затем просто примените пользовательскую тему либо ко всему приложению, либо к деятельности по вашему выбору.

Для получения дополнительной информации о темах и стилях посмотрите http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/, который является хорошим руководством.

30 голосов
/ 01 октября 2011

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sub_screens_aus_hl" 
    android:state_pressed="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_checked="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_focused="true" />
<item android:drawable="@drawable/sub_screens_aus_dis" />  
</selector> 

Здесь вы можете использовать 3 разных изображения для радиокнопки

и использовать этот файл для RadioButton, например:

android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content" 
9 голосов
/ 12 марта 2016

Самый простой способ изменить только радиокнопку - это просто установить селектор на права рисования

<RadioButton
    ...
    android:button="@null"
    android:checked="false"
    android:drawableRight="@drawable/radio_button_selector" />

И селектор:

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

Вот и все

1 голос
/ 16 марта 2017

да .... `из Xml

android:button="@drawable/yourdrawable" 

и из Java

myRadioButton.setButtonDrawable(resourceId or Drawable);

`

0 голосов
/ 12 октября 2015

Вот, вероятно, быстрый подход:

enter image description here

С двумя иконками, показанными выше, у вас будет RadioGroup что-то вроде этого

enter image description here

  • изменить ориентацию RadioGroup на горизонтальную
  • для каждого свойства RadioButton, попробуйте дать значок дляButton в CompoundButton,
  • , настройте отступ и размер,
  • и установите атрибут Background при проверке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...