2012-12-28 5 views
19

eine benutzerdefinierte ToggleButton zu erstellen, ich habe einen neuen Stil in /res/values/styles.xml definiert:Android: Toggle-Textfarbe von ToggleButton

<style name="myToggleButton"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:background">@drawable/my_toggle_button</item> 
</style> 

und ich dann einen Selektor festlegen, wie die Zustände in /res/drawable/my_toggle_button.xml suchen die Taste:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <shape> 
      [...] 
     </shape> 
    </item> 
    <item android:state_checked="false" 
     <shape> 
      [...] 
     </shape> 
    </item> 
</selector> 

Wie kann ich diese Einstellung ändern, um die Textfarbe der Schaltfläche zu ändern, wenn sich der Status ändert?

+0

in Form Umfang, geben Sie Farbe Paremeters wollen Sie wollen und Hintergrund in style.xml löschen. – Tugrul

+0

Ich denke, dass dieser Link für Ihr Problem nützlich ist: http://stackoverflow.com/questions/7096599/how-to-change-the-text-color-of-an-android-tooglebutton-on-state-change – secretlm

+0

Based Beim Experimentieren mit der automatischen Vervollständigung in Eclipse gibt diese Verknüpfung keine gültige Syntax an. Die einzige Möglichkeit, eine Farbe anzugeben, ist '' im Bereich von ''. Es ändert jedoch nicht die Textfarbe. –

Antwort

61

Erstellen Sie eine ähnliche Zustandsliste für die Textfarben, die Sie möchten, und legen Sie sie in res/color, z.

res/color/toggle_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:color="#070" /> 
    <!-- Default State --> 
    <item android:color="#A00" /> 
</selector> 

Dann setzen Sie diese Ressource als Textfarbe der Schaltfläche:

<item name="android:textColor">@color/toggle_color</item> 

PS, ist es empfehlenswert, das letzte Element in einem Selektor keinen Status-Flags muß angeschlossen haben (dh ein Standardzustand), anstatt es mit der Umkehrung der obigen Zustände zu definieren.

+1

Perfekt, danke! –

+2

sehr hilfreiche Antwort - aber ich fand es nicht nur ausgeführt, weil Großbuchstaben im Dateinamen nicht erlaubt sind (API-Version mindestens 18) - gemacht bearbeiten :) – davnicwil