Можно ли изменить значок радиокнопки в группе радиокнопок android

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

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

5 ответов


Да, возможно, вам нужно определить свой собственный стиль для переключателей, в 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>

"радио" здесь должно быть stateful drawable, радио.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/ это хороший гид.


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

<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

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

android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content" 

более простой способ изменить только переключатель-это просто установить селектор для drawable right

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

вот и все


да....` из Xml

android:button="@drawable/yourdrawable" 

и от Java

myRadioButton.setButtonDrawable(resourceId or Drawable);

`


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

enter image description here

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

enter image description here

  • изменить RadioGroup's ориентация по горизонтали
  • для каждого RadioButtonсвойства, попробуйте дать значок Button под CompoundButton,
  • отрегулируйте прокладку и размер,
  • и установить атрибут background при проверке.