코드에서 TextView의 텍스트 색상을 설정하는 방법은 무엇입니까?


544

XML에서는 textColor속성과 같은 텍스트 색상을 설정할 수 있습니다 android:textColor="#FF0000". 그러나 코딩으로 어떻게 변경합니까?

나는 다음과 같은 것을 시도했다 :

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

holder클래스는 어디에 있고 text유형 TextView입니다. 빨간색은 문자열로 설정된 RGB 값 (# FF0000)입니다.

그러나 빨간색이 아닌 다른 색으로 표시됩니다. setTextColor ()에 어떤 종류의 매개 변수를 전달할 수 있습니까? 문서에서는 int이지만 리소스 참조 값입니까 아니면 다른 것입니까?


코드에서 UI를 조정하는 것에 대한 참고 사항은 디자인 타임에 UI를보고 런타임 변경을 최소화하는 이점을 고려하십시오.
AlikElzin-kilaka

답변:


1245

다음을 사용해야합니다.

holder.text.setTextColor(Color.RED);

Color클래스의 다양한 기능을 사용 하여 동일한 효과를 얻을 수 있습니다.

  • Color.parseColor (수동) (LEX 사용과 유사)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgbColor.argb( Manual rgb ) ( Manual argb ) (Ganapathy와 같은)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
  • 물론 XML파일 에서 색상을 정의 하려면 다음을 수행하십시오.

    <color name="errorColor">#f00</color>

    때문에 getColor()기능이 지원되지 않습니다 1 , 당신과 같이 사용합니다 :

    ContextCompat.getColor(context, R.color.your_color);
  • 다음과 같이 일반 HEX를 삽입 할 수도 있습니다.

    myTextView.setTextColor(0xAARRGGBB);

    먼저 알파 채널이있는 경우 색상 값입니다.

물론 완전한 클래스public class Color extends Object를 확인하십시오 .


1 이 코드는 여기에도있었습니다.

textView.setTextColor(getResources().getColor(R.color.errorColor));

이 메소드는 이제 Android M에서 더 이상 사용되지 않습니다. 그러나 이제 예제와 같이 지원 라이브러리contextCompat 에서이 메소드를 사용할 수 있습니다 .


2
또한 텍스트가 링크 인 경우 text.setLinkTextColor (...);를 사용해야합니다. XML에서 코드 또는 android : textColorLink = "..."
WOUNDEDStevenJones

1
@ Nanne R.color.XXX가 색상에 대한 참조라고 언급하면 ​​좋을 것입니다. 명확성을 위해 (예제와 같이) 역 참조해야 함을 의미합니다.
nyaray

무슨 말인지 모르겠어요? 에서와 같이 역 참조되어 더 많은 리소스를 사용하거나 다른 것을 의미합니까?
Nanne

특정 색상 값이 텍스트를 사라지게 할 것인지 알 수있는 방법이 있습니까?
Christopher Masser

6
getColor(int)더 이상 사용되지 않습니다.
RestInPeace

137

여전히 XML 파일에서 색상을 지정하려면 다음을 수행하십시오.

<color name="errorColor">#f00</color>

그런 다음 코드에서 다음 두 가지 방법 중 하나를 사용하여 참조하십시오.

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));    

또는

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

첫 번째는 Android M에 대해 컴파일하는 경우 바람직하지만 전달하는 테마는 null 일 수 있으므로 더 쉬울 수 있습니까?

Compat 라이브러리를 사용하는 경우 다음과 같이 할 수 있습니다

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));

9
setTextColor의 경우 직접 R.color.errorColor 참조가 아닌 getResources (). getColor ()를 가져와야하는 이유는 무엇입니까? R.color.x는 거의 모든 다른 방법에서 작동합니다. 엄청나게 실망스러운!
민간인

8
@Civilian : setXXXColor () 메소드에 필요한 int 매개 변수가 자원 파일에서 조회 할 값이 아니라 사용할 실제 ARGB 값으로 사용되기 때문입니다. 이상하게도 View 클래스에는 setBackgroundColor () 및 setBackgroundResource ()가 있고 TextView에는 setTextResource () 메서드가 없습니다.
Ian Kemp

1
getColor(int)더 이상 사용되지 않습니다. ContextCompat.getColor(getContext(), R.color.yourColor);대체품 인 것 같습니다.
RestInPeace

45

그리고 또 하나 :

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));

1
getResources()컨텍스트 멤버 함수입니다. 어댑터의 경우을 사용하십시오 getContext().getResources(). 색상 값은 @xbakesx의 답변과 같이 리소스에 들어가야합니다.
C0D3LIC1OU5

40

XML 파일에서만이 작업을 수행 할 수 있습니다.

color.xml값 폴더에 파일을 작성하십시오 .

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

그런 다음 모든 XML 파일에서 다음을 사용하여 텍스트 색상을 설정할 수 있습니다.

android:textColor="@color/textbody"

또는 Java 파일에서이 색상을 사용할 수 있습니다.

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));

27

당신이 사용할 수있는

holder.text.setTextColor(Color.rgb(200,0,0));

투명도를 사용하여 원하는 색상을 지정할 수도 있습니다.

holder.text.setTextColor(Color.argb(0,200,0,0));

알파 (투명) 값의 경우 r- 빨간색 g- 녹색 b- 파랑


15

layout.xml에서 다음 코드를 사용하십시오.

<TextView  android:id="@+id/textView1"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content" 
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="16dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#25383C"
        android:textSize="13sp" />

15

텍스트보기에서 색상을 설정하는 방법에는 여러 가지가 있습니다.

  1. studio res-> values-> colors.xml에 색상 값을 다음과 같이 추가하십시오.

    <color name="color_purple">#800080</color>

    이제 XML 또는 액티비티 클래스의 색상을 다음과 같이 설정하십시오.

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. Color.parseColor 코드 아래에서 직접 컬러 코드를 사용하려면

    textView.setTextColor(Color.parseColor("#ffffff"));   
  3. RGB를 사용할 수도 있습니다

    text.setTextColor(Color.rgb(200,0,0));
  4. textView에 직접 16 진 코드를 사용할 수도 있습니다. 다음과 같이 일반 HEX를 삽입 할 수도 있습니다.

    text.setTextColor(0xAARRGGBB);
  5. argb를 알파 값과 함께 사용할 수도 있습니다.

       text.setTextColor(Color.argb(0,200,0,0));

    알파 (투명)의 경우 v.

  6. Compat 라이브러리를 사용하는 경우 다음과 같이 할 수 있습니다

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));

9

나는 일반적으로 모든 견해에 대해 이것을 수행합니다.

myTextView.setTextColor(0xAARRGGBB);

어디

  • AA는 알파를 정의합니다 (투명의 경우 00, 불투명의 경우 FF).

  • RRGGBB는 일반적인 HTML 색상 코드 (예 : 빨간색의 경우 FF0000)를 정의합니다.


그리고 왜 투표를하지 않습니까? 이것에 대한 생각을 추가 할 수 있습니까?
AW

7

setTextAppearance 를 사용하려는 경우 테마에서 상속 된 스타일로 텍스트 색상을 덮어 씁니다. 두 가지를 모두 사용하려면 나중에 색상을 설정하십시오 .

이것은 작동합니다 :

textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);

이렇게하면 텍스트 색상이 흰색 (어두운 테마의 경우) 또는 검은 색 (밝은 테마의 경우)이됩니다 :

textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

XML에서 이것과 반대로 순서는 임의적입니다.


7
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

에서 colors.xml파일, 아래의 코드에 쓰기 :

<color name="colorWhite">#FFFFFF</color>

6

XML 파일 에서 색상을 리소스로 지정 하려면 RGB 값이 아닌 ARGB 값 을 제공해야한다고 생각합니다 .

색상 값을로 변경해보십시오 #FFFF0000. 그것은 당신에게 RED를 줄 것입니다.


내 경험에, 그건 사실이 아니에요 그리고 ARGB 값 대신 RGB 값을 사용할 수 있습니다
slinden77

6

text.setTextColor(getResource().getColor(R.color.black)) color.xml에 검은 색을 만들었습니다.

또는

text.setTextColor(Color.parseColor("#000000")) 여기에 원하는 16 진수 코드를 입력하십시오

또는

text.setTextColor(Color.BLACK) 정적 색상 필드를 사용할 수 있습니다


5

사용하다:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));

5
holder.text.setTextColor(Color.rgb(200,0,0));

또는

myTextView.setTextColor(0xAARRGGBB);

4

어댑터를 사용하면 다음 코드를 사용하여 텍스트 색상을 설정할 수 있습니다.

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));

4
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

위의 코드는 내 편입니다. 다음 text은 색상을 설정해야하는 TextView 입니다.



2

API 23부터는 getResources().getColor()더 이상 사용되지 않습니다.

대신 이것을 사용하십시오 :

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));


1

어댑터에서 다음 코드를 사용하여 텍스트 색상을 설정할 수 있습니다.

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));

1

컬러 코드를 직접주고 싶다면

textView.setTextColor(Color.parseColor("#ffffff"));

또는 색상 폴더에서 색상 코드를 제공하려면

textView.setTextColor(R.color.white);

이 코드 textView.setTextColor (R.color.white); 작동하지 않습니다. 당신은 text.setTextColor (의 GetResources 사용할 수 있습니다 () getColor에서 (R.color.color_purple을) 당신의 color.xml에서 색상을 얻기 위해.
지안 Gomen

1

TextView의 색상을 설정하기에 TextView.setTextColor(R.color.YOURCOLOR)충분하지 않습니다!

이렇게 사용되어야합니다 –

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);

또는

myText.setTextColor(Color.parseColor("#54D66A"));


0

마찬가지로, 나는 다음을 사용하고 있었다 color.xml:

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

다음 TextView과 같이 배경을 설정하십시오 .

textView.setTextColor(R.color.white);

나는 다른 색을 얻고 있었지만 아래 코드를 사용할 때 실제 색을 얻었습니다.

textView.setTextColor(Color.parseColor("#ff6363"));

0

나는 이렇게했다 : res / values ​​폴더에 Colors라는 XML 파일을 만듭니다.

내 Colors.xml :

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="vermelho_debito">#cc0000</color>
    <color name="azul_credito">#4c4cff</color>
    <color name="preto_bloqueado">#000000</color>
    <color name="verde_claro_fundo_lista">#CFDBC5</color>
    <color name="branco">#ffffff</color>
    <color name="amarelo_corrige">#cccc00</color>
    <color name="verde_confirma">#66b266</color>
</resources>

xml 파일 에서이 색상을 얻으려면이 코드를 사용했습니다 .valor는 TextView이고 ctx는 Context 객체입니다. Activity에서 사용하지 않지만 BaseAdapter를 ListView로 사용하고 있습니다. 그렇기 때문에이 Context Object를 사용했습니다.

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

도움이 되길 바랍니다.


0

RGB 값 제공 : text.setTextColor(Color.rgb(200,0,0));
16 진 값에서 색상을 구문 분석하려면 다음을 수행하십시오. text.setTextColor(Color.parseColor("#FFFFFF"));


0

어댑터에 있고 자원에 정의 된 색상을 사용하려는 경우 다음 방법을 시도 할 수 있습니다.

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));

0
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);

0

getColor ()가 사용되지 않습니다

따라서 다음과 같이 시도하십시오.

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));

0

RecyclerView의 ViewHolder에서 TextView에 대해이 작업을 수행했습니다. 왜 그런지 잘 모르겠지만 ViewHolder 초기화에서 작동하지 않았습니다.

public ViewHolder(View itemView) {
    super(itemView);
    textView = (TextView) itemView.findViewById(R.id.text_view);
    textView.setTextColor(context.getResources().getColor(R.color.myColor));
    // Other stuff
}

그러나 onBindViewHolder로 옮길 때 정상적으로 작동했습니다.

public void onBindViewHolder(ViewHolder holder, int position){
    // Other stuff
    holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}

이것이 누군가를 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.