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ティントに色を付けるには、両方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
}
implement this file in res
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="true" Android:state_focused="true"
Android:drawable="@drawable/checkbox_on_background_focus_yellow" />
<item Android:state_checked="false" Android:state_focused="true"
Android:drawable="@drawable/checkbox_off_background_focus_yellow" />
<item Android:state_checked="false"
Android:drawable="@drawable/checkbox_off_background" />
<item Android:state_checked="true"
Android:drawable="@drawable/checkbox_on_background" />
</selector>
and then add button to checkbox
<CheckBox Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="new checkbox"
Android:background="@drawable/checkbox_background"
Android:button="@drawable/checkbox" />