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

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

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

Ответ 1

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

Ответ 2

Вы можете поместить обычное изображение в радиоблоке, как обычная кнопка. для этого создайте один файл 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" 

Ответ 3

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

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

Что все

Ответ 4

да.... ` из Xml

android:button="@drawable/yourdrawable" 

и с Java

myRadioButton.setButtonDrawable(resourceId or Drawable);

`

Ответ 5

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

введите описание изображения здесь

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

введите описание изображения здесь

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