我在Android中使用CheckBox视图.我想在检查时更改它的颜色.现在它是默认的深绿色,当它被检查时,我想把它改成不同的东西,当没有检查时,只是默认颜色.
这是我的代码:
CheckBox c = new CheckBox(this); c.setId(View.generateViewId()); c.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(buttonView.isChecked()) { buttonView.setBackgroundColor(Color.rgb(64, 131, 207)); } if(!buttonView.isChecked()) { buttonView.setBackgroundColor(Color.WHITE); } } });
问题是它没有改变正确的事情.关于如何改变这种颜色的任何想法?
更换你CheckBox
有AppCompatCheckBox
和呼叫下面的方法:
public static void setCheckBoxColor(AppCompatCheckBox checkBox, int uncheckedColor, int checkedColor) { ColorStateList colorStateList = new ColorStateList( new int[][] { new int[] { -android.R.attr.state_checked }, // unchecked new int[] { android.R.attr.state_checked } // checked }, new int[] { uncheckedColor, checkedColor } ); checkBox.setSupportButtonTintList(colorStateList); }
要为CompoundButton Tints着色,请尝试使用API> 21及以下.
if (Build.VERSION.SDK_INT < 21) { CompoundButtonCompat.setButtonTintList(button, ColorStateList.valueOf(tintColor));//Use android.support.v4.widget.CompoundButtonCompat when necessary else } else { button.setButtonTintList(ColorStateList.valueOf(tintColor));//setButtonTintList is accessible directly on API>19 }