Как установить цвет в пользовательском представлении, у которого нет функции для этого? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу использовать пользовательский флажок в моем приложении android, и этот пользовательский флажок не имеет функции для установки цвета, и в примере они устанавливают цвет на xml с помощью (http://schemas.android.com/apk/res-auto) like (app) и устанавливают цвет, которыйway app: stroke_color = "# 2196F3" Хотелось бы узнать, как программно установить цвет, ссылка для пользовательского флажка https://github.com/lguipeng/AnimCheckBox

1 Ответ

0 голосов
/ 05 октября 2018

Я посмотрел на библиотеку.У них нет setter для stroke_color.Единственный обходной путь - использовать Reflection для прямого доступа к этому приватному полю. Отражение почти всегда плохая практика в Java.Но если вы действительно хотите это сделать, вы можете сделать это следующим образом:

AnimCheckBox checkbox = (AnimCheckBox)findViewById(R.id.checkbox);
try{
  Field field = checkbox.getClass().getDeclaredField("mStrokeColor");
  field.setAccessible(true);
  field.setInt(checkbox,Color.parseColor("#2196F3"));
  checkbox.invalidate();
}
catch (NoSuchFieldException e){
  e.printStackTrace();
}
catch (IllegalAccessException e){
  e.printStackTrace();
}

Вы можете установить цвет круга таким же образом.Для circleColor имя поля равно mCircleColor.

...