web-dev-qa-db-ja.com

Android:ラジオボタンとチェックボックスの色をプログラムで変更する

RadioButtonCheckBoxLinearLayoutにプログラムで作成しました。しかし、今、ラジオボタンの色とチェックボックスの色を変更したいと思います。私が使う

RadioButton.setHighlightColor(Color.parseColor("#0c83bd"));

checkbox.setHighlightColor(Color.parseColor("#0c83bd"));

しかし、それはうまくいきませんでした。

12
Amit Desale

これを試して

AppCompatRadioButton newRadioButton = new AppCompatRadioButton(this);
AppCompatCheckBox newCheckBox = new AppCompatCheckBox(this);

の代わりに

RadioGroup newRadioButton = new RadioGroup(this);
CheckBox newCheckBox = new CheckBox(this);
11
Akshay

CheckBoxおよびRadioButtonの代わりにAppCompatCheckBoxおよびAppCompatRadioButtonを使用します。 あなたのxmlは:を持ちます

<Android.support.v7.widget.AppCompatCheckBox
    Android:id="@+id/cbSelected"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:backgroundTint="@color/colorAccent" //This to set your default button color
    Android:checked="true"/>

<Android.support.v7.widget.AppCompatRadioButton
    Android:id="@+id/rb"
    app:buttonTint="@color/colorAccent" //This to set your default button color
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"/>

Java code:Create ColorStateListの場合

        ColorStateList colorStateList = new ColorStateList(
                new int[][]{
                        new int[]{Android.R.attr.state_enabled} //enabled
                },
                new int[] {getResources().getColor(R.color.colorPrimary) }
        );

AppCompatRadioButtonまたはAppCompatCheckBoxのプログラムで色を変更するには、setSupportButtonTintListを呼び出します。

AppCompatRadioButton radioButton = (AppCompatRadioButton) findViewById(R.id.rb);
radioButton.setSupportButtonTintList(colorStateList);

AppCompatCheckBox cbSelected = (AppCompatCheckBox) findViewById(R.id.cbSelected);
cbSelected.setSupportButtonTintList(colorStateList);
18

次のように動的なRadioButtonを作成できます。

RadioButton male = new RadioButton(ReservationContact.this);
male.setTextColor(Color.BLACK);
male.setText("Male");
male.setSelected(true);
male.setId(0);

RadioButtonの円のデフォルト色を変更するために使用されます。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    male.setButtonTintList(ColorStateList.valueOf(ContextCompat.getColor(ReservationContact.this, R.color.background)));
}
male.setHighlightColor(getResources().getColor(R.color.background));
11
Savita Sharma

CheckBoxの場合、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);
}

RadioButtonについても同様だと思います。 Android.R.attrで宣言された属性を確認し、コードを変更できます。

2
ywwynm
   RadioButton rb=(RadioButton) findViewById(R.id.radioButton1);
    rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            rb.setButtonDrawable(R.drawable.image);
            rb.setHighlightColor(Color.parseColor("#0c83bd"));


        }
    });
  }
0
Mayuri

私はywwynmの答えを続けています。

GoogleはsetSupportButtonTintListを制限したため、使用できません。

回避策は、メソッドが制限されていないボタンをTintableCompoundButtonインターフェースとして使用することです。

AppCompatRadioButtonのAPI 19以降で動作します。 AppCompatCheckboxは同じインターフェイスを実装しているため、理論的には機能するはずですが、テストしていません。

楽しんで :)

public static void setAppCompatRadioButtonColor(AppCompatRadioButton radioButton, 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
            }
    );
    ((TintableCompoundButton) radioButton).setSupportButtonTintList(colorStateList);
}
0
TSurkis