我试图了解如何更改我的应用程序中特定主题的所有复选框的外观。
我想更改复选框选中的颜色和复选框边框的颜色。
如果我创建这种风格:
<style name="MyCheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox">
<item name="colorControlNormal">#8AFFFFFF</item>
<item name="colorControlActivated">@android:color/white</item>
</style>并将其作为一个主题应用在我的复选框中--它工作得很好。
<CheckBox
android:id="@+id/status_favorite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyCheckBox"/>但是,我并不想将这个主题应用于每个复选框,我想为所有复选框设置主题。
我试图在我的主题中设置checkboxStyle,但是这是行不通的。
<style name="MyTheme" parent="Theme.AppCompat">
...
<item name="checkboxStyle">@style/MyCheckBoxStyle</item>
...
</style>
<style name="MyCheckBoxStyle" parent="Base.Widget.AppCompat.CompoundButton.CheckBox">
<item name="colorControlNormal">#8AFFFFFF</item>
<item name="colorControlActivated">@android:color/white</item>
</style>是否有方法为所有复选框设置默认主题?
发布于 2018-03-01 23:34:06
不幸的是,colorControlNormal和colorControlActivated是主题属性,而不是样式属性,因此它们只有在视图的主题中定义时才能工作。据我所知,没有办法为某一类型的所有视图设置“默认主题”;像checkboxStyle这样的属性只能为所有复选框设置默认样式。此外,您不能通过编写以下内容来“欺骗”系统:
<style name="MyTheme" parent="Theme.AppCompat">
...
<item name="checkboxStyle">@style/MyCheckBoxStyle</item>
...
</style>
<style name="MyCheckBoxStyle" parent="Base.Widget.AppCompat.CompoundButton.CheckBox">
<item name="android:theme">@style/MyCheckboxTheme</item>
</style>
<style name="MyCheckboxTheme">
<item name="colorControlNormal">#8AFFFFFF</item>
<item name="colorControlActivated">@android:color/white</item>
</style>你们的选择是:
colorControlNormal和colorControlActivatedcolorControlNormal和colorControlActivatedandroid:theme属性设置为要更改的每个复选框(或者设置为持有这些复选框的父视图组)编辑:潜在的解决办法
取决于您的确切需求,您可能可以通过以下方法来解决问题:
<style name="MyTheme" parent="Theme.AppCompat">
<item name="checkboxStyle">@style/MyCheckboxStyle</item>
</style>
<style name="MyCheckboxStyle" parent="Widget.AppCompat.CompoundButton.CheckBox">
<item name="buttonTint">#8AFFFFFF</item>
</style>这将改变您的应用程序中的每个复选框的颜色,而不需要使用主题属性。如果您希望选中/未选中的颜色不同,甚至可以为buttonTint使用颜色选择器资源:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:state_checked="true"/>
<item android:color="#8AFFFFFF"/>
</selector>https://stackoverflow.com/questions/49059754
复制相似问题