如何将 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 您的 CheckBox
的 android: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
。
当我将 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 您的 CheckBox
的 android: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
。