Редактировать 1: для поддержки более низкого уровня API (<23) используйте это: </p>
val compatBak = CompoundButtonCompat.getButtonDrawable(cb)
// cb is your CheckBox
Редактировать: Резервное копирование 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);
Конец редактирования
Я предполагаю, что вы просите изменить / установить атрибут android:button
вашего CheckBox
. Вот как вы можете сделать это программно:
Просмотр:
<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
, которое мы хотим установить. Сделайте cb_drawable.xml
в папке drawable
.