当我向布局添加复选框时,默认情况下会分配一些按钮可绘制对象,特别是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);
编辑结束
我假设您要求更改/设置CheckBox
的android: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
。