web-dev-qa-db-ja.com

プログラムでチェックボックスの色を変更する方法

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);
        }

    }
});

問題は、それが正しいことを変更しないことです。この色を変更する方法についてのアイデアはありますか?

enter image description here

11
user112016322

CheckBoxAppCompatCheckBoxに置き換え、次のメソッドを呼び出します。

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);
}
19
ywwynm

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
}
16
sud007
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" />
0
Amit Sinha