Apa warna default untuk teks dalam tampilan teks?

89

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?

Lukap
sumber

Jawaban:

88

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 TextViewwarna teks default ditentukan dari Tema saat ini yang diterapkan ke Anda Activity.

inazaruk
sumber
Solusi paling tepat. Mempertahankan status warna teks (dinonaktifkan, dll)
dasar
Dari pengamatan saya, warna teks yang ditentukan oleh tema tidak diwarisi oleh TextView yang ditambahkan secara dinamis dari kode. Itu selalu muncul dalam warna putih terlepas dari tema gelap / terang.
shiouming
2
@shiouming Tergantung Konteks yang digunakan. Setiap Pembuat menggunakan Konteks, dan dalam Konteks itu, Tema ditetapkan (biasanya default). Jika perlu, gunakan TextView (Konteks konteks, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Bonatti
110

Sebenarnya warna TextView adalah:

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

atau

#808080
Alex Zaraos
sumber
4
Itu adalah warna teks indikator tab default. Dalam banyak kasus, ini mungkin sama dengan warna teks default, tetapi saya tidak akan mengandalkannya.
k2col
6
Sangat dekat, tapi warnanya tidak sama.
LukaszTaraszka
2
@LukTar benar, saya menggunakan photoshop dan memeriksa warnanya ... # 737373 adalah warna teks tampilan teks dari sampel piksel titik (ukuran area sampel satu piksel) pada tampilan yang diperbesar hingga 1000% di studio android ... saya rasa Anda perlu melihat gaya default aplikasi untuk mendapatkan nilai sebenarnya untuk aplikasi tertentu ...
me_
41

Ada beberapa warna default yang ditentukan di android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);
davenpcj
sumber
4
Seharusnya int c = ...bukanColor c = ...
Kevin Cruijssen
7
Mulai API level23, 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)
InfectedPacket
primary_text_dark sekarang tidak digunakan lagi tetapi tidak tahu alasannya :(
Impulse The Fox
15

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();
Bondax
sumber
Ini sepertinya akan memilih warna berdasarkan tema dengan benar, dan akan memperbarui misalnya, jika aplikasi dalam mode malam.
Brill Pappin
Untuk mendapatkan TypedArray untuk Tema saat ini, panggil tanpa Tema arg: TypedArray a = getTheme (). GetStyledAttributes (attrs);
petrsyn
Ini hanya akan mendapatkan warna yang sesuai jika temanya benar-benar menggunakan textColorSecondary. Karena dimungkinkan untuk menimpanya dalam sebuah tema atau gaya, ini bukanlah cara yang sangat akurat untuk menentukan apa warna teks default untuk tampilan tertentu nantinya. Perhatikan juga bahwa tampilan individual sekarang dapat diberi tema, jadi tema yang terkait dengan konteks tampilan harus digunakan alih-alih mengasumsikan tema aktivitas berlaku untuk semua tampilan.
Lorne Laliberte
6

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 _darkdan _lighttema, 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 #060001dan dalam tema terang itu #060003sejak API v1. Lihat kelas gaya android di sini

Patrick Favre
sumber
Warna yang direferensikan di tautan terakhir Anda sebenarnya bukanlah warna sama sekali, itu hanya nilai android.R yang digunakan untuk mencari warna. Anda dapat mencari warna default dengan mencari warna di direktori ini dan mencari referensi warna dasar di file .xml ini .
Alex Gittemeier
5

Saya tahu ini sudah tua tetapi menurut editor tema saya sendiri dengan tema terang default, default

textPrimaryColor = #000000

dan

textColorPrimaryDark = #757575
Ahmad Reza Enshaee
sumber
2

Saya menggunakan color picker pada textview dan mendapatkan # 757575 ini

dave o grady
sumber
2

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());
Membuang
sumber
0

Tidak ada warna default. Artinya setiap perangkat bisa punya sendiri.

piotrpo.dll
sumber
7
Tidak ada warna default, hanya saja setiap distribusi android dapat menimpanya
Patrick Favre
@ for3st Apakah Anda mengetahui kasus-kasus yang mereka ubah?
Pengembang android
0

Saya yakin nilai integer warna default adalah 16711935 (0x00FF00FF).

C Nick
sumber
12
wow barang hardcode, kamu tahu. Apakah ini nilai untuk semua versi Android di semua perangkat dan dengan semua tema yang dapat dipilih ?! Bercanda, Anda tahu ... :)
Bondax
1
Jadi warna teks default di android adalah pink? Saya pikir ini lebih sejalan dengan # 060001 developer.android.com/reference/android/…
Patrick Favre
0

hei Anda bisa mencoba ini

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

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

quealegriamasalegre
sumber
0

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)
}
Arst
sumber