Как изменить стиль виджета во время выполнения Android Studio - PullRequest
0 голосов
/ 07 октября 2019

Я работаю над проектом, в котором необходимо динамически менять стиль флажка во время выполнения, я прошел через многие другие опции, перечисленные в поле зрения, но большинство из них требуют создания нового экземпляра объекта, который невозможно, в моем случае, любое понимание этой дилеммы было бы потрясающим!

1 Ответ

0 голосов
/ 07 октября 2019

Если у вас есть объект флажка во время выполнения, вы можете редактировать его динамически. Например, вы можете проверить это с помощью

myCheckBox.setChecked(true);

Вы можете изменить окраску следующим образом, если вы находитесь в том же контексте:

для Android <23</p>

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));

для Android> = 23

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {ctx.getResources().getColor(R.color.myCheckedCheckboxColor),ctx.getResources().getColor(R.color.myUncheckedCheckboxColor)};
myCheckBox.setForegroundTintList(new ColorStateList(states,colors)); // <-- requires @TargetApi(23)
CompoundButtonCompat.setButtonTintList(myCheckBox,new ColorStateList(states,colors));

Вы также можете редактировать другие атрибуты стиля. Я не знаю, нужно ли вам устанавливать все атрибуты самостоятельно или же вы можете просто применить новый стиль как простой oneliner ...

...