Как установить цвет в пользовательском представлении, у которого нет функции для этого?
Я хочу использовать пользовательский флажок в моем приложении android, и этот пользовательский флажок не имеет функции для установки цвета, и в примере они устанавливают цвет на xml, используя ( http://schemas.android.com/apk/res-auto) как (приложение) и установить цвет таким образом app:stroke_color="#2196F3" Я хотел бы знать, как установить цвет программно, ссылка для пользовательского флажка https://github.com/lguipeng/AnimCheckBox
1 ответ
Я посмотрел на библиотеку. У них нет 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
,