如何将 CheckBox 按钮 Drawable 重置为默认值

How to reset CheckBox buttonDrawable to default

当我将 CheckBox 添加到布局时,它默认分配了一些按钮可绘制对象,特别是 Android Studio 在属性面板中将其显示为

button: @android:drawable/btn_check_material_anim

如果我将其更改为其他可绘制对象,如何通过编程将其重置为默认值?

编辑 1:支持较低的 api 级别(< 23)使用此:

val compatBak = CompoundButtonCompat.getButtonDrawable(cb)
// cb is your CheckBox

Edit: Backing up the ButtonDrawable:

要设置默认属性,我们将在更改默认属性之前将其存储在某个地方(避免在 xml 中更改它,因为您可以动态更改它并且它允许您进行备份) , (把onCreate()注释成@RequiresApi(Build.VERSION_CODES.M),修改前保存,以后可以用

val bak = cb.buttonDrawable
// re setting..
cb.buttonDrawable = bak;

或 Java:

CheckBox cb = findViewById(R.id.cb);
Drawable buttonDrawable = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    buttonDrawable = cb.getButtonDrawable();
}

// later on.. 
cb.setButtonDrawable(buttonDrawable);


编辑结束

我假设您要求 change/set 您的 CheckBoxandroid:button 属性。 以下是如何以编程方式执行此操作:

查看:

 <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@drawable/cb_drawable" />

Activity:

如果您使用 java:

CheckBox cb = findViewById(R.id.checkBox);
cb.setButtonDrawable(R.drawable.cb_drawable);

或者在科特林中:

val cBox = findViewById<CheckBox>(R.id.checkBox)
cBox.buttonDrawable = ContextCompat.getDrawable(this, R.drawable.cb_drawable)

// or just use synthetic
checkBox.buttonDrawable = ContextCompat.getDrawable(this, R.drawable.cb_drawable)

ContextCompat 或者您可以使用 getDrawable()。这里的R.drawable.cb_drawable就是我们想要设置的drawable。在drawable文件夹下制作cb_drawable.xml