Saya mengatur warna menjadi merah, dan setelah itu saya ingin mengatur warna kembali ke default, tetapi saya tidak tahu apa itu warna default, apakah ada yang tahu?
89
Anda dapat menyimpan warna lama dan kemudian menggunakannya untuk mengembalikan nilai aslinya. Berikut ini contohnya:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Namun secara umum TextView
warna teks default ditentukan dari Tema saat ini yang diterapkan ke Anda Activity
.
Sebenarnya warna TextView adalah:
android:textColor="@android:color/tab_indicator_text"
atau
#808080
sumber
Ada beberapa warna default yang ditentukan di
android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
sumber
int c = ...
bukanColor c = ...
getResources().getColor(int id)
sekarang sudah tidak digunakan lagi (lihat link ). Anda dapat menggunakangetResources().getColor (int id, Resources.Theme theme)
atauContextCompat.getColor(contex, android.R.color.primary_text_dark)
Dapatkan nilai-nilai ini dari atribut:
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();
sumber
Ada default dalam tema yang digunakan Android jika Anda tidak menentukan warna teks. Mungkin ada warna berbeda di berbagai UI Android (mis. HTC Sense, Samsung TouchWiz, dll). Android memiliki
_dark
dan_light
tema, jadi defaultnya berbeda untuk ini (tapi hampir hitam di keduanya di vanilla android). Namun, praktik yang baik adalah menentukan sendiri warna teks utama Anda untuk memberikan gaya yang konsisten di seluruh perangkat.Dalam kode:
getResources().getColor(android.R.color.primary_text_dark); getResources().getColor(android.R.color.primary_text_light);
Dalam xml:
android:color="@android:color/primary_text_dark" android:color="@android:color/primary_text_light"
Sebagai referensi di Android vanilla warna teks tema gelap
#060001
dan dalam tema terang itu#060003
sejak API v1. Lihat kelas gaya android di sinisumber
Saya tahu ini sudah tua tetapi menurut editor tema saya sendiri dengan tema terang default, default
textPrimaryColor = #000000
dan
textColorPrimaryDark = #757575
sumber
Saya menggunakan color picker pada textview dan mendapatkan # 757575 ini
sumber
Ini mungkin tidak dapat dilakukan dalam semua situasi, tetapi mengapa tidak menggunakan nilai TextView acak berbeda yang ada dalam Aktivitas yang sama dan membawa warna yang Anda cari?
txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
sumber
Tidak ada warna default. Artinya setiap perangkat bisa punya sendiri.
sumber
Saya yakin nilai integer warna default adalah 16711935 (0x00FF00FF).
sumber
ColorStateList colorStateList = textView.getTextColors(); String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
sumber
Saya menemukan bahwa
android:textColor="@android:color/secondary_text_dark"
memberikan hasil yang lebih dekat ke warna TextView default daripadaandroid:textColor="@android:color/tab_indicator_text"
. Saya kira Anda harus beralih di antara secondary_text_dark / light tergantung pada Tema yang Anda gunakansumber
Anda bisa menggunakan TextView.setTag / getTag untuk menyimpan warna asli sebelum membuat perubahan. Saya akan menyarankan untuk membuat sumber daya id unik di ids.xml untuk membedakan tag lain jika Anda punya.
sebelum menyetel ke warna lain:
if (textView.getTag(R.id.txt_default_color) == null) { textView.setTag(R.id.txt_default_color, textView.currentTextColor) }
Mengubah kembali:
textView.getTag(R.id.txt_default_color) as? Int then { textView.setTextColor(this) }
sumber