Es sieht so aus, als könnten wir in einem RadioButton Folgendes verwenden:
android:button="@drawable/myCustomStateBackground"
Dieses Drawable nimmt jedoch nur die Stelle ein, an der das Radio Drawable normalerweise eingesetzt werden würde. Idealerweise möchte ich, dass mein gesamter Schaltflächenhintergrund zustandsbehaftet ist. Wenn also gedrückt wird, soll der gesamte Knopf so aussehen, als ob er im gedrückten Zustand stecken bleibt. Um das zu tun, hatte ich gehofft, ich könnte so etwas tun:
android:button="null"
android:background="@drawable/myCustomStateBackground"
Aber dann weiß der Hintergrund, der gezeichnet werden kann, nichts über den Push-Status, wie es das Button-Attribut tut. Gibt es einen Weg, um das zu umgehen?
android:button
Attribut.Antworten:
Geben Sie Ihrem Radiobutton einen benutzerdefinierten Stil:
<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>
Ersetzen Sie die Zeichen durch Ihre eigenen.
quelle
Sie sollten
android:button="@null"
anstelle von einstellen"null"
.Du warst so nah dran!
quelle
vollständige Lösung hier:
<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>
Selektor 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>
quelle
android:button="@drawable/oragne_toggle_btn"
Wenn Sie das einzige Symbol des Optionsfelds ändern möchten, können Sie es nur
android:button="@drawable/ic_launcher"
zu Ihrem Optionsfeld hinzufügen. Um die Empfindlichkeit beim Klicken zu erhöhen, müssen Sie den Selektor verwenden<?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>
und auf Ihr Radio einstellen
android:background="@drawable/name_of_selector"
quelle
Fügen Sie programmgesteuert das Hintergrundbild hinzu
minSdkVersion 16
RadioGroup rg = new RadioGroup(this); RadioButton radioButton = new RadioButton(this); radioButton.setBackground(R.drawable.account_background); rg.addView(radioButton);
quelle