2012-12-28 10 views
19

のトグルテキストの色、私は/res/values/styles.xmlに新しいスタイルを定義しました:アンドロイド:カスタムトグルボタンを作成するにはトグルボタン

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

と私は、ボタンの状態が/res/drawable/my_toggle_button.xmlにどのように見えるかを指定するために、セレクタを使用します。

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

この設定を変更して、状態が変更されたときにボタンのテキストの色を切り替えるにはどうすればよいですか?

+0

シェイプスコープでは、color paremetersを使用して、style.xmlで背景を削除したい場合があります。 – Tugrul

+0

このリンクはあなたの問題に役立つと思います:http://stackoverflow.com/questions/7096599/how-to-change-the-text-color-of-an-android-tooglebutton-on-state-change – secretlm

+0

Based Eclipseでオートコンプリートを使用した実験では、そのリンクは有効な構文を与えません。色を指定する唯一の方法は ''のスコープで ''です。ただし、テキストの色は変更されません。 –

答えて

61

希望するテキストの色と同じ状態リストを作成し、res/colorに入れます。

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> 

その後、ボタンのテキストの色としてこのリソースを設定します。

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

PS、それが接続されているすべての状態フラグを持っていないセレクタで最後のアイテムを持っていることをお勧めです上記の状態の逆数で定義するのではなく、デフォルトの状態(つまり、デフォルト状態)になります。

+1

パーフェクト、ありがとう! –

+2

非常に便利な答えですが、大文字がファイル名(APIバージョン18以上)で許可されていないために実行されなかったことが判明しました。 – davnicwil

関連する問題