Как сбросить кнопку CheckBoxDrawable по умолчанию - PullRequest
1 голос
/ 12 февраля 2020

Когда я добавляю CheckBox в макет, по умолчанию для него назначается какая-то кнопка, в частности Android Studio отображает его на панели атрибутов как

button: @android:drawable/btn_check_material_anim

Если я изменяю его на другой рисунок, как я могу сбросить его обратно к настройкам по умолчанию программно?

1 Ответ

1 голос
/ 14 февраля 2020

Редактировать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...