gpt4 book ai didi

android - 在 Android 中使用颜色选择器设置复选框颜色

转载 作者:行者123 更新时间:2023-11-29 19:20:40 24 4
gpt4 key购买 nike

我在我的 Android 应用程序中使用颜色选择器为 Checkbox 设置属性 buttonTint 以使其在选中/未选中时改变颜色。

这是我的复选框样式的 XML:

<style name="standard_checkbox">
<item name="android:layout_marginLeft">@dimen/checkbox_small_margin</item>
<item name="android:layout_marginRight">@dimen/checkbox_small_margin</item>
<item name="buttonTint">@color/checkbox_standard_selector</item>
</style>

这是我的选择器 XML:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/checkbox_checked" />
<item android:state_checked="false" android:color="@color/checkbox_unchecked" />
</selector>

但是它不能正常工作。当 Checkbox 开始可见时(灰色),它具有正确的颜色。单击/选中时,它会变成绿色。但是当它再次取消选中时,由于某种原因它仍然是绿色的。

编辑

问题也可能是我在 list 中选择的主题引起的。我正在使用这个自定义主题:

<style name="Theme.Transparent.NoActionBar" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

最佳答案

尝试以下代码:以编程方式更改复选框按钮背景

CheckBox cb = (CheckBox) findViewById(R.id.checkbox);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
buttonView.setBackgroundColor(getResources().getColor(R.color.checked));
}
if (!isChecked) {
buttonView.setBackgroundColor(getResources().getColor(R.color.unchecked));
}
}
});

注意:getColor() 已弃用,您需要使用 ContextCompat.getColor(context, R.color.color)

第二种方式

用你的颜色集创建一个颜色列表变量

ColorStateList  colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_checked}, // unchecked
new int[]{android.R.attr.state_checked} , // checked
},
new int[]{
Color.parseColor("#FFFFFF"), //unchecked color
Color.parseColor("#009000"), //checked color
}
);

使用以下方法设置颜色:setButtonTintList()

 CheckBox cb = (CheckBox) findViewById(R.id.checkbox);
CompoundButtonCompat.setButtonTintList(cb,colorStateList);

关于android - 在 Android 中使用颜色选择器设置复选框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578889/

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