2010-08-26 12 views
84

zu ändern Ich möchte den Benutzer meiner Android-Anwendung die Möglichkeit, einige Parameter einstellen. Der Radiobutton ist ideal für diese Situation. Allerdings mag ich nicht, dass die Radio-Buttons gerendert werden.Ist es möglich, das Radio-Button-Symbol in einer android Radio-Button-Gruppe

Ist es möglich, das Optionsfeld-Symbol zu ändern? Zum Beispiel ist es möglich, ein benutzerdefiniertes Layout für jede Zeile zu erstellen und in diesem Layout mein eigenes Symbol zu referenzieren und den Font zu ändern.

Antwort

156

Ja, das ist möglich, Sie haben Ihren eigenen Stil für Radio-Buttons zu definieren, bei res/Werte/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' hier sollte eine Stateful ziehbar, radio.xml sein:

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

Dann wenden Sie einfach das benutzerdefinierte Thema entweder auf ganze App oder auf Aktivitäten Ihrer Wahl.

Für weitere Informationen über Themen und Stile schauen Sie sich http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/ das ist eine gute Anleitung.

+12

Sie auch nur den Androiden einstellen: eine separate individuelle Stil-Schaltfläche Eigenschaft auf das Optionsfeld selbst, anstatt die Definition für sie . –

+6

Stimmt, aber das ist keine gute Übung, da Sie normalerweise mehr als nur einen Radioknopf haben. –

+0

@KonstantinBurov Was ist, wenn ich ein 9-Patch-Bild verwende? – Hades

28

Sie können benutzerdefinierte Bild in Radiobutton wie normale Schaltfläche setzen. für das Erstellen einer XML-Datei in ziehbar Ordner zB

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

Hier können Sie 3 verschiedene Bilder für Radiobutton verwenden

und verwenden diese Datei zu RadioButton- wie:

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

wahrscheinlich hier ein schnelle Annäherung,

enter image description here

Mit zwei Symbole oben gezeigt, du sollst ein RadioGroup so etwas wie dieses

die RadioGroup haben 's Orientierung horizontal
  • für jeden RadioButton' s Eigenschaften

    enter image description here

    • ändern, versuchen Sie das Symbol geben für Button unter CompoundButton,
    • passen Sie die Polsterung und Größe,
    • und legen Sie das Hintergrundattribut fest, wenn es aktiviert ist.
  • 7

    Die einfachere Art und Weise wird

    <RadioButton 
        ... 
        android:button="@null" 
        android:checked="false" 
        android:drawableRight="@drawable/radio_button_selector" /> 
    

    Und der Wähler ist für ziehbar Recht einfach Wähler auf nur das Optionsfeld zu ändern:

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

    Das ist alles ja

    +0

    Einfachste Lösung! Vielen Dank! – Mangesh

    1

    ist .. ..` von Xml

    android:button="@drawable/yourdrawable" 
    

    und von Java

    myRadioButton.setButtonDrawable(resourceId or Drawable); 
    

    `

    Verwandte Themen