レイアウトで使用している CheckBox 要素のスタイルを設定しようとしています。
さまざまなアクティビティで一貫したスタイルが必要なので、マニフェストに適用するカスタム テーマを作成しました。
styles.xml ファイルは次のようになります。
<style name="LightTheme" parent="@android:style/Theme.NoTitleBar">
.
.
<item name="android:checkboxStyle">@style/CustomCheckBox</item>
.
.
</style>
.
.
<style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/btn_check_selector</item>
<item name="android:textColor">@color/mainTextColorLight</item>
<item name="android:textSize">15dp</item>
</style>
.
.
SDK にある CheckBox セレクターと基本的に同じセレクターは、次のようになります。
<!-- Enabled states -->
<item android:state_checked="true" android:state_window_focused="false"
android:state_enabled="true"
android:drawable="@drawable/btn_check_on" />
<item android:state_checked="false" android:state_window_focused="false"
android:state_enabled="true"
android:drawable="@drawable/btn_check_off" />
<item android:state_checked="true" android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/btn_check_on_pressed" />
<item android:state_checked="false" android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/btn_check_off_pressed" />
<item android:state_checked="true" android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/btn_check_on_focused" />
<item android:state_checked="false" android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/btn_check_off_focused" />
<item android:state_checked="false"
android:state_enabled="true"
android:drawable="@drawable/btn_check_off" />
<item android:state_checked="true"
android:state_enabled="true"
android:drawable="@drawable/btn_check_on" />
<!-- Disabled states -->
<item android:state_checked="true" android:state_window_focused="false"
android:drawable="@drawable/btn_check_on_disabled" />
<item android:state_checked="false" android:state_window_focused="false"
android:drawable="@drawable/btn_check_off_disabled" />
<item android:state_checked="true" android:state_focused="true"
android:drawable="@drawable/btn_check_on_disabled_focused" />
<item android:state_checked="false" android:state_focused="true"
android:drawable="@drawable/btn_check_off_disabled_focused" />
<item android:state_checked="false" android:drawable="@drawable/btn_check_off_disabled" />
<item android:state_checked="true" android:drawable="@drawable/btn_check_on_disabled" />
セレクターはプロジェクトの「drawable」フォルダーに保存され、密度固有のリソースは drawable-{l|m|h|xh} dpi フォルダーに保存されます。
奇妙なことに、これは長い間非常にうまく機能していました。しかし、今日、突然機能しなくなりました。CheckBox 要素が box-part なしで表示されるようになりました。テキストのみが表示されます。
他のすべてのカスタム スタイル要素は意図したとおりに機能しますが、CheckBox はこの奇妙な動作を示します。
スタイルをxmlでCheckBoxに直接適用しようとしましたが、うまくいきませんでした。また、通常の「クリーン プロジェクト」も実行しました。これを機能させる唯一の方法は、セレクターをプロジェクト内のすべての drawable-{l|m|h|xh} dpi フォルダーにコピーすることです。すべてのドローアブル フォルダーにセレクターのコピーを配置する必要はなく、他のカスタム セレクターにも必要ないという印象を受けました。
私のコードに明らかな欠陥を見つけられる人はいますか?