2013-08-20 15 views
40

Ich habe versucht, den Toggle Button Look anpassen, aber ohne Erfolg. Hier ist, wie ich es aussehen soll:Android toggle button benutzerdefinierte Aussehen

enter image description here

Kann mir jemand ein Tutorial?

+0

siehe http://stackoverflow.com/questions/9752760/slide-toggle-for-android –

+0

nicht das, was ich suche ich brauche etwas für 2.2 –

+0

Wie CWAC sagte, Android ist Opensource, gehen Sie einfach in Quelle von 4 und Backport die Funktion, die Sie gerne in Ihrer Anwendung zu 2.X –

Antwort

1

erstellen Selektor

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/btn_da" android:state_checked="true"/> 
    <item android:drawable="@drawable/btn_nu"/> 
</selector> 

und verwenden Sie es als Hintergrund für Ihre ToggleButton.

+0

Ich habe dies versucht, aber der Code zeigt Fehler oder nichts, könnten Sie bitte ein bisschen umfassender sein? Was genau muss ich tun? Ich bin ein Anfänger. –

1

Ich denke, Sie müssen einen benutzerdefinierten Hintergrund für Ihre Schaltfläche definieren. Werfen Sie einen Blick auf das Entwicklerhandbuch zum Anpassen eines Button's background.

jedoch in Schritt drei, Erstellen Sie eine neue XML-Datei im res/drawable/ directory Mit dieser Xml:

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

Das Element android:state_checked="true" ist, was dieser Zustand als überprüfter Hintergrund definiert.

Lassen Sie mich wissen, ob dies für Sie funktioniert.

87

erstellen toggle_selector.xml in res/ziehbar

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

die Wähler auf Ihre Umschaltknopf anwenden

<ToggleButton 
      android:id="@+id/chkState" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/toggle_selector" 
      android:textOff="" 
      android:textOn=""/> 

Hinweis: zum Entfernen des Textes i in obigem Code folgenden verwendet

textOff="" 
textOn="" 
6

Ich weiß nicht, ob das die beste Lösung ist, aber es hat gut für mich funktioniert:

1.- Entscheiden Sie, wie groß die Umschalttaste sein soll. In meinem Fall Breite 56dp und Höhe 76dp.

2.- das Symbol Set erstellen 56px-76px für MDPI, 84px-113px hdpi, gleich für xhdpi und xxhdpi

3.- Verschieben Sie die Symbole in den entsprechenden ziehbar Ordnern. In meinem Fall 20 Symbole 5 in jedem Ordner namens ic_name1_on, ic_name1_off [...] ic_name5_off

4.- Erstellen Sie die folgende XML-Dateien in einem neuen Ordner namens ziehbar (falls es noch nicht vorhanden ist):

  • ic_name1_toggle.xml
  • ic_name1_toggle_bg.xml
  • ic_name2_toggle.xml
  • (...)
  • ic_name5_toggle_bg.xml

5.- In ic_name1_toggle.xml der Code muss sein:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_checked="false" 
     android:drawable="@drawable/ic_name1_off" /> 
    <item 
     android:state_checked="true" 
     android:drawable="@drawable/ic_name1_on" /> 
</selector> 

6.- In ic_name1_toggle_bg.xml der Code sein muss:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" 
     android:drawable="@android:color/transparent" /> 
    <item android:id="@+android:id/toggle" 
     android:drawable="@drawable/ic_name1_toggle" /> 
</layer-list> 

7.- schließlich in Ihrem layout.xml:

<ToggleButton 
       android:id="@+id/toggleButton1" 
       android:layout_width="56dp" 
       android:layout_height="76dp" 
       android:background="@android:color/transparent" 
       android:button="@drawable/ic_name1_toggle_bg" 
       android:textOff="" 
       android:textOn="" />