如何将复选框按钮可绘制重置为默认值



当我向布局添加复选框时,默认情况下会分配一些按钮可绘制对象,特别是Android Studio在属性面板中将其显示为

button: @android:drawable/btn_check_material_anim

如果我将其更改为其他可绘制对象,如何以编程方式将其重置回默认对象?

编辑 1:要支持较低的 API 级别 ( <23(,请使用以下命令:

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

编辑:备份ButtonDrawable

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

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

或在爪哇中:

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


编辑结束

我假设您要求更改/设置CheckBoxandroid:button属性。 下面介绍了如何以编程方式执行此操作:

视图:

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

活动:

如果您使用的是 Java:

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

或者在 kotlin 中:

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

最新更新