我正在尝试设置我在布局中使用的 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 元素现在显示为没有框部分。只有文本可见。
所有其他自定义样式元素都按预期工作,而 CheckBox 显示这种奇怪的行为。
我尝试将样式直接应用于带有 xml 的 CheckBox,但没有成功。还完成了通常的“清洁项目”。我可以让它工作的唯一方法是将选择器复制到我项目中的所有 drawable-{l|m|h|xh}dpi 文件夹。我的印象是没有必要在每个可绘制文件夹中都有选择器的副本,而且我的其他自定义选择器当然也没有必要。
谁能在我的代码中发现任何明显的缺陷?