Metin görünümünde metin için varsayılan renk nedir?


89

Rengi kırmızı olarak ayarladım ve bundan sonra rengi tekrar varsayılana ayarlamak istiyorum, ancak varsayılan rengin ne olduğunu bilmiyorum, kimse biliyor mu?

Yanıtlar:


88

Eski rengi kaydedebilir ve ardından orijinal değeri geri yüklemek için kullanabilirsiniz. İşte bir örnek:

ColorStateList oldColors =  textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors

Ancak genel olarak varsayılan TextViewmetin rengi, size uygulanan mevcut Temadan belirlenir Activity.


En doğru çözüm. Metin rengi durumlarını koru (devre dışı, vb.)
dasar

Benim gözlemime göre, tema tarafından tanımlanan metin rengi, dinamik olarak koddan eklenen TextView tarafından miras alınmıyor. Koyu / açık temasından bağımsız olarak her zaman beyaz görünür.
54'te shiouming

2
@shiouming Kullanılan Bağlama bağlıdır. Her Oluşturucu bir Bağlam kullanır ve bu Bağlamda bir Tema ayarlanır (genellikle varsayılan). Gerekirse, TextView (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Bonatti

110

Aslında TextView rengi:

android:textColor="@android:color/tab_indicator_text"

veya

#808080

4
Bu, varsayılan sekme göstergesi metin rengidir. Çoğu durumda, varsayılan metin rengiyle aynı olabilir, ancak buna güvenmem.
k2col

6
Çok yakın ama bu renk aynı değil.
LukaszTaraszka

2
@LukTar haklı, photoshop kullandım ve rengi kontrol ettim ... # 737373, android stüdyosunda% 1000 yakınlaştırılmış bir görünümde bir nokta piksel örneğinden (bir piksellik örnek alan boyutu) gelen metin görünümü metin rengidir ... herhangi bir özel uygulamanın gerçek değerini almak için uygulamanın varsayılan stiline bakmanız gerekir ...
me_

41

İçinde tanımlanan bazı varsayılan renkler vardır. android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);

4
Bunun int c = ...yerineColor c = ...
Kevin Cruijssen

7
API seviyesi 23 itibariyle getResources().getColor(int id)artık kullanımdan kaldırılmıştır ( bağlantıya bakın ). Ya kullanabilirsiniz getResources().getColor (int id, Resources.Theme theme)veyaContextCompat.getColor(contex, android.R.color.primary_text_dark)
InfectedPacket

Primary_text_dark artık kullanımdan kaldırıldı, ancak neden olduğu hakkında bir fikriniz yok :(
Impulse The Fox

15

Bu değerleri özniteliklerden alın:

int[] attrs = new int[] { android.R.attr.textColorSecondary };
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs);
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED);
a.recycle();

Bu, temaya göre rengi doğru bir şekilde seçecek ve örneğin uygulama gece modundaysa güncellenecek gibi görünüyor.
Brill Pappin

Geçerli Tema için TypedArray'i almak için Tema argümanı olmadan onu çağırın: TypedArray a = getTheme () .getStyledAttributes (attrs);
petrsyn

Bu, yalnızca tema gerçekten textColorSecondary kullanıyorsa uygun bir renk alır. Bunu bir tema veya stilde geçersiz kılmak mümkün olduğundan, bu, belirli bir görünüm için varsayılan metin renginin gerçekte ne olacağını belirlemenin çok doğru bir yolu değildir. Ayrıca, bireysel görünümlerin artık temalı olabileceğine dikkat edin, bu nedenle, etkinliğin temasının tüm görünümler için geçerli olduğunu varsaymak yerine görünümün bağlamıyla ilişkili tema kullanılmalıdır.
Lorne Laliberte

6

Bir metin rengi belirtmezseniz Android'in kullandığı temada varsayılanlar vardır. Çeşitli Android kullanıcı arayüzlerinde farklı renkler olabilir (ör. HTC Sense, Samsung TouchWiz, vb.). Android'in bir _darkve _lightteması vardır, bu nedenle varsayılanlar bunlar için farklıdır (ancak her ikisinde de vanilya android'de neredeyse siyah) Bununla birlikte, cihazlarda tutarlı bir stil sağlamak için birincil metin renginizi kendiniz tanımlamanız iyi bir uygulamadır.

Kodda:

getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);

Xml olarak:

android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"

Vanilya Android'de referans olarak, koyu tema metin rengi #060001ve açık temada #060003API v1'den beri. Android stili sınıfına buradan bakın


Son bağlantınızda atıfta bulunulan renkler aslında hiç renk değildir, bunlar sadece rengi aramak için kullanılan android.R değerleridir. Bu dizindeki rengi bularak ve bu .xml dosyasında temel renk referansına bakarak varsayılan renkleri arayabilirsiniz .
Alex Gittemeier

5

Eski olduğunu biliyorum ama varsayılan ışık temalı kendi tema düzenleyicime göre, varsayılan

textPrimaryColor = #000000

ve

textColorPrimaryDark = #757575

2

Metin görünümünde bir renk seçici kullandım ve bunu aldım # 757575


2

Her durumda mümkün olmayabilir, ancak neden aynı Aktivitede bulunan ve aradığınız rengi taşıyan farklı bir rastgele TextView değerini kullanmıyorsunuz?

txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());

0

Varsayılan renk yoktur. Bu, her cihazın kendine ait olabileceği anlamına gelir.


7
Hayır, her android dağıtımının üzerine yazabileceği varsayılan renkler yoktur
Patrick Favre

@ for3st Bunu değiştirdikleri vakaları biliyor musunuz?
android geliştiricisi

0

Varsayılan renk tamsayı değerinin 16711935 (0x00FF00FF) olduğuna inanıyorum.


12
Vay, sabit kodlanmış şeyler, bilirsiniz. Bu, tüm cihazlarda ve tüm seçilebilir temalarda tüm Android sürümleri için değer miydi ?! Şaka, biliyorsun ... :)
Bondax

1
Yani android'deki varsayılan metin rengi pembe mi? # 060001 developer.android.com/reference/android/…
Patrick Favre

0

hey bunu deneyebilirsin

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));

0

android:textColor="@android:color/secondary_text_dark"Varsayılan TextView rengine göre daha yakın bir sonuç sağladığını buldum android:textColor="@android:color/tab_indicator_text". Kullandığınız Temaya bağlı olarak ikincil_metin_dark / ışık arasında geçiş yapmanız gerektiğini düşünüyorum.


0

Değişiklik yapmadan önce orijinal rengi saklamak için TextView.setTag / getTag'i kullanabilirsiniz. Varsa, diğer etiketleri ayırt etmek için ids.xml'de benzersiz bir kimlik kaynağı oluşturmanızı öneririm.

diğer renklere geçmeden önce:

if (textView.getTag(R.id.txt_default_color) == null) {
    textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}

Geri dönüş:

textView.getTag(R.id.txt_default_color) as? Int then {
    textView.setTextColor(this)
}
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.