Dalam XML, kita dapat mengatur warna teks berdasarkan textColor
atribut, seperti android:textColor="#FF0000"
. Tapi bagaimana cara mengubahnya dengan coding?
Saya mencoba sesuatu seperti:
holder.text.setTextColor(R.color.Red);
Di mana holder
hanya kelas dan text
tipe TextView
. Merah adalah nilai RGB (# FF0000) yang diatur dalam string.
Tapi itu menunjukkan warna berbeda daripada merah. Parameter apa yang bisa kita berikan di setTextColor ()? Dalam dokumentasi, katanya int
, tetapi apakah itu nilai referensi sumber daya atau apa pun?
Jawaban:
Kamu harus menggunakan:
Anda dapat menggunakan berbagai fungsi dari
Color
kelas untuk mendapatkan efek yang sama tentunya.Color.parseColor
(Manual) (seperti penggunaan LEX)Color.rgb
danColor.argb
( Manual rgb ) ( Manual argb ) (seperti penggunaan Ganapathy)Dan tentu saja, jika Anda ingin menentukan warna dalam suatu
XML
file, Anda dapat melakukan ini:karena
getColor()
fungsi ini sudah usang 1 , Anda harus menggunakannya seperti ini:Anda juga dapat menyisipkan HEX biasa, seperti:
Di mana Anda memiliki saluran alpha terlebih dahulu, lalu nilai warnanya.
Lihat manual lengkap tentu saja, Warna publik memperluas Objek .
1 Kode ini dulu juga ada di sini:
Metode ini sekarang tidak digunakan lagi di Android M. Namun Anda dapat menggunakannya dari contextCompat di pustaka dukungan , seperti yang ditunjukkan oleh contoh sekarang.
sumber
getColor(int)
sudah ditinggalkan.Jika Anda masih ingin menentukan warna di file XML Anda:
Kemudian rujuk dalam kode Anda dengan salah satu dari dua metode ini:
atau
Yang pertama mungkin lebih disukai jika Anda mengompilasi melawan Android M, namun tema yang Anda berikan bisa nol, jadi mungkin itu lebih mudah bagi Anda?
Dan jika Anda menggunakan perpustakaan Compat Anda dapat melakukan sesuatu seperti ini
sumber
getColor(int)
sudah ditinggalkan.ContextCompat.getColor(getContext(), R.color.yourColor);
tampaknya menjadi penggantinya.Dan satu lagi:
sumber
getResources()
adalah fungsi anggota Konteks. Untuk adaptor, gunakangetContext().getResources()
. Nilai warna harus masuk ke sumber daya, seperti dalam jawaban @ xbakesx.Anda dapat melakukan ini hanya dari file XML juga.
Buat
color.xml
file di folder nilai:Kemudian dalam file XML apa pun, Anda dapat mengatur warna untuk teks menggunakan,
Atau Anda dapat menggunakan warna ini dalam file Java:
sumber
Kamu bisa menggunakan
Anda juga dapat menentukan warna apa yang Anda inginkan dengan Transparansi.
a untuk nilai Alpha (Transparan) r-red g-green b-blue
sumber
gunakan kode berikut di layout.xml
sumber
Ada banyak cara berbeda untuk mengatur warna pada tampilan teks.
Tambahkan nilai warna di studio res-> values-> colors.xml as
Sekarang atur warna dalam xml atau kelas actvity sebagai
Jika Anda ingin memberikan kode warna langsung gunakan di bawah ini kode Color.parseColor
Anda juga dapat menggunakan RGB
Gunakan juga dapat menggunakan hexcode langsung untuk textView. Anda juga dapat menyisipkan HEX biasa, seperti:
Anda juga dapat menggunakan argb dengan nilai alpha.
a untuk Alpha (Transparan) v.
Dan jika Anda menggunakan perpustakaan Compat Anda dapat melakukan sesuatu seperti ini
sumber
Saya biasanya melakukan ini untuk setiap tampilan:
dimana
AA mendefinisikan alfa (00 untuk transparan, FF untuk opak)
RRGGBB mendefinisikan kode warna HTML normal (seperti FF0000 untuk merah).
sumber
Jika Anda berencana untuk menggunakan setTextAppearance, Anda harus tahu bahwa itu akan menimpa warna teks dengan gaya yang diwarisi dari tema. Jadi jika Anda ingin menggunakan keduanya, atur warnanya sesudahnya .
Ini bekerja:
Meskipun ini akan menyebabkan warna teks Anda misalnya putih (untuk tema gelap) atau hitam (untuk tema terang):
Bertentangan dengan ini dalam XML, urutannya arbitrer.
sumber
Dalam
colors.xml
file tersebut, tulis kode berikut:sumber
Saya percaya bahwa jika Anda ingin menentukan warna sebagai sumber daya (dalam file XML ), Anda harus memberikan nilai ARGB -nya (bukan hanya nilai RGB).
Coba ubah nilai warna Anda menjadi
#FFFF0000
. Seharusnya memberi Anda MERAH.sumber
text.setTextColor(getResource().getColor(R.color.black))
Anda telah membuat warna hitam di color.xml.ATAU
text.setTextColor(Color.parseColor("#000000"))
di sini ketik hexcode yang diinginkanATAU
text.setTextColor(Color.BLACK)
Anda dapat menggunakan bidang warna statissumber
Menggunakan:
sumber
atau
sumber
Menggunakan Adaptor Anda dapat mengatur warna teks dengan menggunakan kode ini:
sumber
Kode di atas bekerja di pihak saya. Berikut
text
ini adalah TextView yang warna perlu diatur.sumber
sumber
Dari API 23 dan seterusnya,
getResources().getColor()
sudah usang.Gunakan ini sebagai gantinya:
sumber
sumber
Di Adaptor Anda dapat mengatur warna teks dengan menggunakan kode ini:
sumber
jika Anda ingin memberikan kode warna secara langsung maka gunakan
atau jika Anda ingin memberikan kode warna dari folder warna kemudian gunakan
sumber
Untuk mengatur warna TextView,
TextView.setTextColor(R.color.YOURCOLOR)
tidak cukup!Itu harus digunakan seperti ini -
ATAU
sumber
sumber
Demikian pula, saya menggunakan
color.xml
:Untuk mengatur
TextView
latar belakang seperti:Saya mendapatkan warna yang berbeda, tetapi ketika saya menggunakan kode di bawah ini saya mendapatkan warna yang sebenarnya.
sumber
Saya melakukan cara ini: Membuat file XML, yang disebut Warna di folder res / values.
My Colors.xml:
Untuk mendapatkan warna ini dari file xml, saya telah menggunakan kode ini: valor itu adalah TextView, dan ctx itu adalah objek Konteks. Saya tidak menggunakannya dari Aktivitas, tetapi BaseAdapter ke ListView. Itu sebabnya saya menggunakan Objek Konteks ini.
Semoga ini bisa membantu.
sumber
Untuk memberikan nilai rgb:
text.setTextColor(Color.rgb(200,0,0));
Untuk parsing warna dari nilai hex:
text.setTextColor(Color.parseColor("#FFFFFF"));
sumber
Jika Anda menggunakan adaptor dan masih ingin menggunakan warna yang ditentukan dalam sumber daya, Anda dapat mencoba pendekatan berikut:
sumber
sumber
getColor () tidak digunakan lagi
Jadi cobalah cara ini:
sumber
Saya melakukan ini untuk TextView di ViewHolder untuk RecyclerView. Saya tidak begitu yakin mengapa, tetapi itu tidak berhasil bagi saya dalam inisialisasi ViewHolder.
Tetapi ketika saya memindahkannya ke onBindViewHolder, itu berfungsi dengan baik.
Semoga ini bisa membantu seseorang.
sumber