備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

SwitchPreferenceでenable、disableを設定したときに文字色を変更する方法

SwitchPreference使用時にenable、disableでtitleの色を変更したくなり、調べてみました。
まず、drawableフォルダにテキストカラーのmycolor.xmlを作成

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- disabled -->
  <item android:state_enabled="false" android:color="#868686" />
  <!-- enabled -->
  <item android:color="#000000"/>
</selector>

次に、valuesフォルダ内にthemes.xmlを作成。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="my_theme" parent="@android:style/Theme.DeviceDefault">
    <item name="android:background">#f0f0f0</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:textColor">@drawable/mycolor</item>
  </style>
</resources>

作成したテーマをPreferenceActivityに適応( AndroidManifest )

<!-- 通知設定画面 -->
<activity
  android:name="MyNotificationActivity"
  android:screenOrientation="portrait"
  android:launchMode="singleTask"
  android:theme="@style/my_theme" >
</activity>

これで大丈夫でした。
今まではenable、disableの文字色をコードで書いていたのですが、xmlで書くと楽になりますね。
ちなみに、SwitchPreferenceですが、Android5.+では正常に動作しない事があるようです。d.hatena.ne.jp
stackoverflow.com