Intereting Posts
Как скопировать файлы из папки «assets» в SDCard? Как включить автоматический запуск для моего приложения в xiaomi программно Bluetooth-звонок Gatt не работает с новым API для Lollipop Какой шаблон дизайна хорош для разработки приложений Android Тестирование CursorLoader с помощью Robolectric & Mockito Как использовать маркеры начала и конца в regex для Java String? Как управлять Loopers и Threads (нить не умирает больше!) Анимация масштаба изображения в андроиде Как реализовать шаблон «Загрузка изображений» (непрозрачность, экспозиция и насыщенность) из новых руководств по дизайну материалов Android Studio: невозможно получить результат «adb version» В адаптере gridview getView (position == 0) вызывается слишком много раз для измерения макета, когда setImageBitmap () в загрузчике Как я могу изменить –android-платформу в Qt Creator, чтобы не быть андроидом – 1 в режиме отладки? Местоположение Android NDK по умолчанию Приложение Android Подключение к серверу Node.js с помощью Socket.io Включите Интернет на Android во время сна

RadioButton – как использовать пользовательский доступный?

Похоже, мы можем использовать следующее в RadioButton:

android:button="@drawable/myCustomStateBackground" 

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

 android:button="null" android:background="@drawable/myCustomStateBackground" 

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

Solutions Collecting From Web of "RadioButton – как использовать пользовательский доступный?"

Дайте вашему радиобутту собственный стиль:

 <style name="MyRadioButtonStyle" parent="@android:style/Widget.CompoundButton.RadioButton"> <item name="android:button">@drawable/custom_btn_radio</item> </style> 

custom_btn_radio.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_window_focused="false" android:drawable="@drawable/btn_radio_on" /> <item android:state_checked="false" android:state_window_focused="false" android:drawable="@drawable/btn_radio_off" /> <item android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/btn_radio_on_pressed" /> <item android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/btn_radio_off_pressed" /> <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/btn_radio_on_selected" /> <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/btn_radio_off_selected" /> <item android:state_checked="false" android:drawable="@drawable/btn_radio_off" /> <item android:state_checked="true" android:drawable="@drawable/btn_radio_on" /> </selector> 

Замените чертежи своими собственными.

Вы должны установить android:button="@null" вместо "null" .

Вы были очень близки!

Полное решение здесь:

 <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/oragne_toggle_btn" android:checked="true" android:text="RadioButton" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/oragne_toggle_btn" android:layout_marginTop="20dp" android:text="RadioButton" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/oragne_toggle_btn" android:layout_marginTop="20dp" android:text="RadioButton" /> </RadioGroup> 

Селектор XML

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

Если вы хотите изменить только значок радиокнопки, вы можете добавить к вашему переключателю только android:button="@drawable/ic_launcher" и сделать чувствительный щелчок, тогда вы должны использовать селектор

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

И установите для вашего android:background="@drawable/name_of_selector" радио android:background="@drawable/name_of_selector"