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

조회수 34128회

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

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

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

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

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)