gpt4 book ai didi

android - 主题/样式所有复选框

转载 作者:行者123 更新时间:2023-11-29 14:35:00 26 4
gpt4 key购买 nike

我想了解如何针对特定主题更改我的应用程序中所有复选框的外观。

我想更改复选框复选颜色和复选框边框颜色。

如果我创建这种样式:

<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>

有没有办法为所有复选框设置默认主题?

最佳答案

不幸的是,colorControlNormalcolorControlActivated主题属性,而不是样式属性,所以它们只有在它们'在 View 的主题中定义。据我所知,无法为某种类型的所有 View 设置“默认主题”; 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>

您的选择是:

  • 修改应用主题中的 colorControlNormalcolorControlActivated
  • 修改 Activity 主题中的 colorControlNormalcolorControlActivated
  • 手动将 android:theme 属性设置为您要更改的每个复选框(或设置为包含这些复选框的父 View 组)

编辑:潜在的解决方法

根据您的具体要求,您也许可以避免这样做:

<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>

关于android - 主题/样式所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49059754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com