web-dev-qa-db-ja.com

Androidチェックボックスの背景を変更するには?

Android checkBoxがあり、デフォルトの背景は透明です。白にしたいので、スタイルを使用します。

<style name="BrandedCheckBox" parent="AppTheme">
    <item name="colorAccent">@color/cyan</item>
    <item name="colorControlNormal">@color/text_gray</item>
    <item name="colorControlActivated">@color/cyan</item>
</style>

チェックボックスのテーマを設定します。

<CheckBox
    Android:id="@+id/check_payable"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentEnd="true"
    Android:layout_gravity="center"
    Android:theme="@style/BrandedCheckBox"/>

しかし、結果はこれです: enter image description here しかし、私はそれを次のようにしたいと思います: enter image description here

誰かがこれについて私を助けることができますか?

8
Nazila

使用できますAndroid:button

   <CheckBox
       Android:id="@+id/check_box"
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       Android:button="@drawable/checkbox_background" />

チェックボックス_background.xml

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

私はこれらの2つの画像をドローアブルで使用しています

checkbox_unchecked

checkbox_checked

13
Rudresh

各状態に必要な正確な外観を定義するセレクタードローアブルを使用するだけです(セレクターにリストされているドローアブルは、必要に応じて透明にすることができます)。次に、チェックボックスのxmlでこれを設定していることも確認してください。

Android:background="@drawable/checkbox_background"
Android:button="@null"

また、AppCompatチェックボックスの最近のバグを回避するために、古き良きAndroid.widget.CheckBoxを使用することをお勧めします(フルパスを使用して、 AppCompatを使用しません)。

近い将来、androidXからAppCompatCheckBoxに移行できるようになります。ただし、現時点では(これを書いている間)、古いAPIレベルで実行すると、カスタム背景のバグがまだあります。私はすでにここで1つ報告しました: https://issuetracker.google.com/issues/120865686

私の答えがあなたのお役に立てば幸いです。

2
Blackd
white color code #FFFFFF in your color.xml

<style name="BrandedCheckBox" parent="AppTheme">
    <item name="colorAccent">@color/cyan</item>
    <item name="colorControlNormal">@color/text_gray</item>
    <item name="colorControlActivated">@color/white</item>
</style>
1
Amit Ranjan

次のコードを使用できます:Android:background="#006C84"

<CheckBox
    Android:id="@+id/cb"
    Android:background="#006C84"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

アクティビティでは、次のものを使用できます。

chkBox = (CheckBox)findViewById(R.id.cb);

chkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
    {
        // TODO Auto-generated method stub
        if (buttonView.isChecked())
        {
            // When Checked
            //cb.setBackgroundColor(Color.BLACK);
            chkBox.setBackgroundColor(Color.parseColor("#FF8D3F"));
        }
        else
        {
            // When Not Checked
            // Set Your Default Color.
            chkBox.setBackgroundColor(Color.parseColor("#006C84"));
        }
    }
});
0
PulkitG