カスタムToggleButtonを作成するために、/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>
この設定を変更して、状態が変化したときにボタンのテキストの色を切り替えるにはどうすればよいですか?
必要なテキストの色について同様の状態リストを作成し、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>
追伸:セレクターの最後の項目には、上記の状態の逆で定義するのではなく、状態フラグを付けない(つまり、デフォルトの状態)ことをお勧めします。