코드로 TextView의 글자색을 바꿀수 있나요?


XML에서 TextView의 색을 바꿀때 android:textColor="#FF0000"이런 식으로 textColor 속성을 바꾸잖아요. 이걸 코드에서 자바로는 어떻게 할 수 있죠?

holder.text.setTextColor(R.color.Red);

위의 코드에서 holder는 클래스고 text는 TextView에요. Red는 RGB값이 #FF0000인 strings이고요.

근데 결과를 보면 글자색이 빨강하고는 조금 달라요. 관련 문서를 보면 setTextColor에는 int를 전달한다고 하는데 그건 리소스의 레퍼런스값만 되는건가요? 아니면 다른것도 되나요?

  • 2016년 01월 14일에 작성됨

조회수 1661


1 답변


좋아요
0
싫어요
채택취소하기

holder.text.setTextColor(Color.RED);

제 생각에 이렇게 바꾸셔야 할 것 같습니다. 위에 코드처럼 해보니까 빨간색이 잘 나옵니다.


Color클래스에서 똑같은 효과를 주는 메소드는 많습니다.

  • Color.parseColor text.setTextColor(Color.parseColor("#FFFFFF"));

  • Color.rgbColor.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값을 나타냅니다.

  • 2016년 01월 14일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close