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"/>
しかし、結果はこれです: しかし、私はそれを次のようにしたいと思います:
誰かがこれについて私を助けることができますか?
使用できます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つの画像をドローアブルで使用しています
各状態に必要な正確な外観を定義するセレクタードローアブルを使用するだけです(セレクターにリストされているドローアブルは、必要に応じて透明にすることができます)。次に、チェックボックスのxmlでこれを設定していることも確認してください。
Android:background="@drawable/checkbox_background"
Android:button="@null"
また、AppCompatチェックボックスの最近のバグを回避するために、古き良きAndroid.widget.CheckBoxを使用することをお勧めします(フルパスを使用して、 AppCompatを使用しません)。
近い将来、androidXからAppCompatCheckBoxに移行できるようになります。ただし、現時点では(これを書いている間)、古いAPIレベルで実行すると、カスタム背景のバグがまだあります。私はすでにここで1つ報告しました: https://issuetracker.google.com/issues/120865686
私の答えがあなたのお役に立てば幸いです。
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>
次のコードを使用できます: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"));
}
}
});