코드로 TextView의 글자색을 바꿀수 있나요?
조회수 34128회
XML에서 TextView의 색을 바꿀때 android:textColor="#FF0000"이런 식으로 textColor 속성을 바꾸잖아요. 이걸 코드에서 자바로는 어떻게 할 수 있죠?
holder.text.setTextColor(R.color.Red);
위의 코드에서 holder는 클래스고 text는 TextView에요. Red는 RGB값이 #FF0000인 strings이고요.
근데 결과를 보면 글자색이 빨강하고는 조금 달라요. 관련 문서를 보면 setTextColor에는 int를 전달한다고 하는데 그건 리소스의 레퍼런스값만 되는건가요? 아니면 다른것도 되나요?
1 답변
-
holder.text.setTextColor(Color.RED);
제 생각에 이렇게 바꾸셔야 할 것 같습니다. 위에 코드처럼 해보니까 빨간색이 잘 나옵니다.
Color클래스에서 똑같은 효과를 주는 메소드는 많습니다.
Color.parseColor text.setTextColor(Color.parseColor("#FFFFFF"));
Color.rgb와 Color.argb holder.text.setTextColor(Color.rgb(200,0,0)); holder.text.setTextColor(Color.argb(0,200,0,0));
그리고 xml에 직접 색을 정의해주어도 됩니다.
<color name="색이름">#f00</color>
getResources().getColor()는 안드로이드 M부터 deprecated돼서 ContextCompat.getColor(context, R.color.색이름); 이런 식으로 사용하시면 됩니다.
마지막으로
- 직접 Hex로 표현하는것도 가능합니다.
myTextView.setTextColor(0xAARRGGBB);
AA는 알파값이고 RRGGBB는 각각 RGB값을 나타냅니다.
댓글 입력