Как установить цвет TextView в Android?
В файле string.xml я использую следующий тег
<color name="mycolor1">#F5DC49</color>
Если я использую
textview1.setTextColor(Color.CYAN);
он работает, но
textview1.setTextColor(R.color.mycolor1);
не работает.
Как я могу использовать цвет, определенный в файле XML?
Ответы
Ответ 1
TextView.setTextColor()
принимает int, представляющий цвет (например, 0xFFF5DC49), а не идентификатор ресурса из xml файла. В упражнении вы можете сделать что-то вроде:
textView1.setTextColor(getResources().getColor(R.color.mycolor))
за пределами действия вам понадобится Context
например.
textView1.setTextColor(context.getResources().getColor(R.color.mycolor))
Ответ 2
textView1.setTextColor(Color.parseColor("#F5DC49"));
без ресурсов
Ответ 3
context.getResources().getColor
устарел.
Вам нужно использовать ContextCompat.getColor(), который является частью библиотеки поддержки V4 ( поэтому он будет работать для всех предыдущих API).
ContextCompat.getColor(context, R.color.my_color);
Вам нужно будет добавить библиотеку поддержки V4, добавив следующее в массив dependencies
внутри вашего приложения build.gradle:
compile 'com.android.support:support-v4:23.0.1' # or any version above
Если вам интересно, в документации указано, что метод будет использовать контекстную тему:
Начиная с M, возвращенный цвет будет стилизован для указанного Контекстная тема