los*_*ion 1 android android-theme android-styles
我试图了解如何更改我的应用程序中的特定主题的所有复选框的外观.
我想更改复选框检查颜色和复选框边框颜色.
如果我创建这种风格:
<style name="MyCheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox">
<item name="colorControlNormal">#8AFFFFFF</item>
<item name="colorControlActivated">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
并将其作为主题应用于我的复选框,效果很好.
<CheckBox
android:id="@+id/status_favorite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyCheckBox"/>
Run Code Online (Sandbox Code Playgroud)
但是我真的不想将该主题应用于每个复选框,我想为所有复选框设置主题.
我试图在我的主题中设置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>
Run Code Online (Sandbox Code Playgroud)
有没有办法为所有复选框设置默认主题?
不幸的是,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>
Run Code Online (Sandbox Code Playgroud)
你的选择是:
colorControlNormal并colorControlActivated在您的应用程序的主题中colorControlNormal并colorControlActivated在您的活动的主题中android: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>
Run Code Online (Sandbox Code Playgroud)
这将更改应用中每个复选框的颜色,而无需使用主题属性.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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |