Можно ли изменить значок переключателя в группе переключателей 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>
'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/, это хорошее руководство.
Вы можете поместить пользовательское изображение в радиокнопке как обычную кнопку. для этого создайте один 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 как:
android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content"
Самый простой способ поменять радиокнопку - просто установить селектор для правого рисования
<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);
`
Если вы хотите сделать это программно,
checkBoxOrRadioButton.setButtonDrawable(null);
checkBoxOrRadioButton.setBackgroundResource(R.drawable.resource_name);
Вот, вероятно, быстрый подход,
С двумя иконками, показанными выше, вы получите RadioGroup
что-то вроде этого
- изменить
RadioGroup
ориентация по горизонтали - для каждого
RadioButton
Свойства, попробуйте дать значок дляButton
подCompoundButton
, - настроить отступы и размер,
- и установите атрибут Background, когда проверено.