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?
Jawaban:
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
Ada beberapa warna default yang ditentukan di android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
bukanColor c = ...
getResources().getColor(int id)
sekarang sudah tidak digunakan lagi (lihat link ). Anda dapat menggunakan getResources().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();
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 sini
Saya tahu ini sudah tua tetapi menurut editor tema saya sendiri dengan tema terang default, default
textPrimaryColor = #000000
dan
textColorPrimaryDark = #757575
Saya menggunakan color picker pada textview dan mendapatkan # 757575 ini
Tidak ada warna default. Artinya setiap perangkat bisa punya sendiri.
Saya yakin nilai integer warna default adalah 16711935 (0x00FF00FF).
hei Anda bisa mencoba ini
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Saya menemukan bahwa android:textColor="@android:color/secondary_text_dark"
memberikan hasil yang lebih dekat ke warna TextView default daripada android:textColor="@android:color/tab_indicator_text"
. Saya kira Anda harus beralih di antara secondary_text_dark / light tergantung pada Tema yang Anda gunakan
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)
}