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:
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 TextView
metin rengi, size uygulanan mevcut Temadan belirlenir Activity
.
Aslında TextView rengi:
android:textColor="@android:color/tab_indicator_text"
veya
#808080
İçinde tanımlanan bazı varsayılan renkler vardır. android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
yerineColor c = ...
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)
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();
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 _dark
ve _light
teması 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 #060001
ve açık temada #060003
API v1'den beri. Android stili sınıfına buradan bakın
Eski olduğunu biliyorum ama varsayılan ışık temalı kendi tema düzenleyicime göre, varsayılan
textPrimaryColor = #000000
ve
textColorPrimaryDark = #757575
Metin görünümünde bir renk seçici kullandım ve bunu aldım # 757575
Varsayılan renk yoktur. Bu, her cihazın kendine ait olabileceği anlamına gelir.
Varsayılan renk tamsayı değerinin 16711935 (0x00FF00FF) olduğuna inanıyorum.
hey bunu deneyebilirsin
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
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.
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)
}