Kodda TextView metin rengi nasıl ayarlanır?


544

XML'de, textColorniteliğe göre bir metin rengi ayarlayabiliriz android:textColor="#FF0000". Ama kodlayarak nasıl değiştirebilirim?

Gibi bir şey denedim:

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

Nerede holdersadece bir sınıf ve texttürdür TextView. Kırmızı, dizelerde ayarlanmış bir RGB değeridir (# FF0000).

Ancak kırmızı yerine farklı bir renk gösterir. SetTextColor () içine ne tür bir parametre iletebiliriz? Dokümantasyonda diyor ki int, ama bir kaynak referans değeri mi yoksa başka bir şey mi?


Kullanıcı arayüzünü kodda değiştirmeyle ilgili bir not, lütfen kullanıcı arayüzünü tasarım zamanında görmenin avantajlarını göz önünde bulundurun ve çalışma zamanı değişikliklerini en aza indirin.
AlikElzin-kilaka

Yanıtlar:


1245

Kullanmalısın:

holder.text.setTextColor(Color.RED);

ColorElbette aynı etkiyi elde etmek için sınıftan çeşitli işlevleri kullanabilirsiniz .

  • Color.parseColor (Manuel) (LEX'in kullandığı gibi)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgbve Color.argb( Manuel rgb ) ( Manuel argb ) (Ganapatinin kullandığı gibi)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • Ve elbette, bir XMLdosyada renginizi tanımlamak istiyorsanız , bunu yapabilirsiniz:

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

    Çünkü getColor()fonksiyon kullanımdan kaldırılmıştır 1 , bunu gibi kullanmak gerekir:

    ContextCompat.getColor(context, R.color.your_color);
  • Ayrıca, düz HEX ekleyebilirsiniz, örneğin:

    myTextView.setTextColor(0xAARRGGBB);

    İlk önce bir alfa kanalınızın olduğu yerde renk değeri.

Tüm el kitabına göz atın, genel sınıf Color Object'i genişletir .


1 Bu kod burada da vardı:

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

Bu yöntem artık Android M'de kullanımdan kaldırılmıştır. Bununla birlikte , örnekte gösterildiği gibi, destek kitaplığındaki contextCompat'tan kullanabilirsiniz .


2
Ayrıca, metin bir bağlantıysa text.setLinkTextColor (...); veya android kod: textColorLink = "..." XML'de
WOUNDEDStevenJones

1
@Nanne Cevabınızın R.color.XXX'in renge referans olduğunu belirtmesi iyi olur. Netlik için (örnekteki gibi) kayıttan çıkarılması gerektiği anlamına gelir.
nyaray

Neyi kastettiğinden emin değilim? Olduğu gibi, izinsiz ve daha fazla kaynak kullanacak yoksa başka bir şey mi demek istiyorsun?
Nanne

Belirli bir renk değerinin bir metnin kaybolmasına izin verip vermeyeceğini söylemenin bir yolu var mı?
Christopher Masser

6
getColor(int)kullanımdan kaldırıldı.
RestInPeace

137

Hala XML dosyanızda renklerinizi belirtmek istiyorsanız:

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

Ardından, bu iki yöntemden biriyle kodunuza referansta bulunun:

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

veya

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

Birincisi, Android M'ye karşı derliyorsanız muhtemelen tercih edilir, ancak geçirdiğiniz tema boş olabilir, belki bu sizin için daha kolay olabilir mi?

Uyumluluk kütüphanesini kullanıyorsanız böyle bir şey yapabilirsiniz

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

9
SetTextColor için, neden doğrudan R.color.errorColor referansı yerine getResources (). GetColor () yöntemini alması gerekir? R.color.x hemen hemen her yöntemde çalışır. İnanılmaz derecede sinir bozucu!
Sivil

8
@Civilian: setXXXColor () yöntemlerinin gerektirdiği int parametresi, kaynak dosyada arama değeri DEĞİL, kullanılacak gerçek ARGB değeri olarak alınır. Garip bir şekilde, View sınıfı hem setBackgroundColor () hem de setBackgroundResource () yöntemine sahipken TextView'de bir setTextResource () yöntemi eksik.
Ian Kemp

1
getColor(int)kullanımdan kaldırıldı. ContextCompat.getColor(getContext(), R.color.yourColor);yedek gibi görünüyor.
RestInPeace

45

Ve bir tane daha:

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

1
getResources()bir Bağlam üyesi işlevidir. Adaptörler için kullanın getContext().getResources(). Renk değerleri @ xbakesx'in cevabı gibi kaynaklara gitmelidir.
C0D3LIC1OU5

40

Bunu yalnızca bir XML dosyasından da yapabilirsiniz.

color.xmlDeğerler klasöründe bir dosya oluşturun :

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

</resources>

Daha sonra herhangi bir XML dosyasında,

android:textColor="@color/textbody"

Veya bu rengi bir Java dosyasında kullanabilirsiniz:

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

27

Kullanabilirsiniz

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

Saydamlık ile istediğiniz rengi de belirleyebilirsiniz.

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

a Alfa (Şeffaf) değeri için r-kırmızı g-yeşil b-mavi


15

layout.xml dosyasında aşağıdaki kodu kullanın

<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

Metin görünümünde renk ayarlamanın birçok farklı yolu vardır.

  1. Studio res-> değerleri-> colors.xml dosyasına renk değeri ekleyin

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

    Şimdi rengi xml veya actvity sınıfında

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. Renk kodu vermek istiyorsanız doğrudan Color.parseColor kodunu kullanın

    textView.setTextColor(Color.parseColor("#ffffff"));   
  3. RGB'yi de kullanabilirsiniz

    text.setTextColor(Color.rgb(200,0,0));
  4. Use, textView için doğrudan hexcode da kullanabilir. Ayrıca, düz HEX ekleyebilirsiniz, örneğin:

    text.setTextColor(0xAARRGGBB);
  5. Argb'yi alfa değerleriyle de kullanabilirsiniz.

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

    Alfa için (Şeffaf)

  6. Uyumluluk kütüphanesini kullanıyorsanız böyle bir şey yapabilirsiniz

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

9

Normalde bunu herhangi bir görünüm için yaparım:

myTextView.setTextColor(0xAARRGGBB);

nerede

  • AA alfa tanımlar (şeffaf için 00, opak için FF)

  • RRGGBB normal HTML renk kodunu tanımlar (kırmızı için FF0000 gibi).


Ve neden aşağı oy? Bununla ilgili bazı düşünceler ekleyebilir misiniz lütfen?
AW

7

SetTextAppearance kullanmayı planlıyorsanız , temanın miras alan stille metin renginin üzerine yazılacağını bilmelisiniz. Her ikisini de kullanmak istiyorsanız, rengi daha sonra ayarlayın .

Bu çalışıyor:

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

Bu, metin renginizin örneğin beyaz (koyu tema için) veya siyah (açık tema için) olmasına neden olur:

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

Bunun aksine XML biçiminde sıra isteğe bağlıdır.


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

Gelen colors.xmldosyanın aşağıdaki kodu yazın:

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

6

Bir rengi kaynak olarak ( XML dosyasında) belirtmek isterseniz , ARGB değerini (yalnızca RGB değerini değil) sağlamanız gerektiğine inanıyorum .

Renk değerinizi olarak değiştirmeyi deneyin #FFFF0000. Size KIRMIZI vermelidir.


deneyimlerime göre, bu doğru değil ve bir ARGB değeri yerine bir RGB değeri kullanmak mümkün
slinden77

6

text.setTextColor(getResource().getColor(R.color.black)) color.xml dosyasında siyah renk oluşturdunuz.

VEYA

text.setTextColor(Color.parseColor("#000000")) buraya istenen hexcode yazın

VEYA

text.setTextColor(Color.BLACK) statik renk alanlarını kullanabilirsiniz


5

kullanın:

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

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

veya

myTextView.setTextColor(0xAARRGGBB);

4

Bağdaştırıcı'yı kullanarak bu kodu kullanarak metin rengini ayarlayabilirsiniz:

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"));

Yukarıdaki kod benim tarafımda çalışıyor. Burada text, rengin ayarlanması gereken bir TextView var.



2

API 23'ten itibaren getResources().getColor()kullanımdan kaldırılmıştır.

Bunun yerine şunu kullanın:

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

1
   textViewStatus.setTextColor(res.getColor(R.color.green));

1

Bağdaştırıcı'da metin rengini şu kodu kullanarak ayarlayabilirsiniz:

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

1

doğrudan renk kodu vermek istiyorsanız kullanın

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

veya renkler klasöründen renk kodu vermek istiyorsanız

textView.setTextColor(R.color.white);

bu kod textView.setTextColor (R.color.white); çalışmıyor. Color.xml'den renk almak için text.setTextColor (getResources (). GetColor (R.color.color_purple) kullanabilirsiniz.
Gian Gomen

1

Bir TextView rengini ayarlamak TextView.setTextColor(R.color.YOURCOLOR)için yeterli değildir!

Bu şekilde kullanılmalıdır -

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

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

VEYA

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


0

Benzer şekilde, ben kullanıyordum color.xml:

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

TextViewArka planı aşağıdaki gibi ayarlamak için :

textView.setTextColor(R.color.white);

Farklı bir renk alıyordum, ancak aşağıdaki kodu kullandığımda gerçek rengi aldım.

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

0

Ben bu şekilde yaptım: res / değerleri klasöründe Renkler adlı bir XML dosyası oluşturun.

Renklerim.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>

Bu renkleri xml dosyasından almak için şu kodu kullandım: valor bir TextView ve ctx bir Context nesnesidir. Ben bir Etkinlik, ancak bir ListView BaseAdapter kullanmıyorum. Bu yüzden bu Bağlam Nesnesini kullandım.

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

Umarım yardımcı olur.


0

text.setTextColor(Color.rgb(200,0,0));
RGB değerleri sağlamak için: Rengi onaltılık bir değerden ayrıştırmak için: text.setTextColor(Color.parseColor("#FFFFFF"));


0

Bir adaptördeyseniz ve yine de kaynaklarda tanımlı bir renk kullanmak istiyorsanız, aşağıdaki yaklaşımı deneyebilirsiniz:

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 () kullanımdan kaldırıldı

Bu yüzden şu şekilde deneyin:

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

0

Bunu bir RecyclerView için ViewHolder bir TextView için yapıyordum. Neden olduğundan emin değilim, ama ViewHolder başlatmasında benim için çalışmadı.

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

Ama ben onBindViewHolder taşındı, iyi çalıştı.

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

Umarım bu birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.