Kamu bisa menggunakan:
getResources().getColor(R.color.idname);
Lihat di sini tentang cara menentukan warna khusus:
http://sree.cc/google/android/defining-custom-colors-using-xml-in-android
EDIT (1):
Karena getColor(int id)
sudah usang sekarang, ini harus digunakan:
ContextCompat.getColor(context, R.color.your_color);
(ditambahkan di perpustakaan dukungan 23)
EDIT (2):
Kode di bawah ini dapat digunakan untuk pre dan post Marshmallow (API 23)
ResourcesCompat.getColor(getResources(), R.color.your_color, null); //without theme
ResourcesCompat.getColor(getResources(), R.color.your_color, your_theme); //with theme
android.R.color.some_color
juga misalnya:getResources().getColor(android.R.color.holo_blue_bright)
(setidaknya, pada API 17)ContextCompat
danResourcesCompat
? Jika tidak ada perbedaan praktis, itu akan kurang membingungkan jika Anda menghapus salah satu dari mereka dari jawaban Anda.Berdasarkan Pustaka Dukungan Android yang baru (dan pembaruan ini ), sekarang Anda harus menelepon:
Menurut dokumentasi :
Metode ini sudah tidak digunakan lagi di API level 23 . Gunakan getColor (int, Theme) sebagai gantinya
Ini adalah solusi yang sama untuk
getResources().getColorStateList(id)
:Anda harus mengubahnya seperti ini:
EDIT 2019
Mengenai
ThemeOverlay
penggunaan konteks tampilan terdekat:Jadi dengan cara ini Anda mendapatkan warna yang tepat berdasarkan ThemeOverlay Anda.
Dibutuhkan khusus ketika dalam aktivitas yang sama Anda menggunakan tema yang berbeda, seperti tema gelap / terang. Jika Anda ingin lebih memahami tentang Tema dan Gaya, pembicaraan ini disarankan: Mengembangkan Tema dengan Gaya
sumber
Theme
dapat dinyatakan sebagai nol, jadi panggil sajagetColor(R.color.my_color, null)
jika Anda tidak yakin tema apa yang harus dilewati.Tentukan warna Anda
values / color.xml
Dapatkan int warna dan atur
Lihat juga
sumber
getResources()
dalamActivity
atauFragment
?getResources()
luar Aktivitas atau Fragmen.getResources()
juga tersedia sebagai API publik tentang apa pun yang menerapkan Konteks dan juga pada Tampilan.Pendekatan Terbaik
Sebagai jawaban @sat, pendekatan yang baik untuk mendapatkan warna adalah
atau gunakan cara di bawah ini ketika Anda tidak memiliki akses ke
getResources()
metode.Apa yang saya lakukan adalah
Ini paling mudah digunakan di mana saja di aplikasi Anda! Bahkan di kelas Util atau kelas mana pun di mana Anda tidak memiliki Konteks atau getResource ()
Masalah (Ketika Anda tidak memiliki Konteks)
Ketika Anda tidak memiliki
Context
akses , sukai metode diUtil
kelas Anda .Asumsikan metode di bawah ini tanpa Konteks.
Sekarang Anda akan lulus
Context
sebagai parameter dalam metode ini dan gunakangetResources().
Jadi di sini adalah solusi unik Bonus di mana Anda dapat mengakses sumber daya dari mana saja seperti
Util class
. TambahkanResources
keApplication
kelas Anda atau Buat satu jika tidak ada.Tambahkan bidang nama ke
manifest.xml
<application
tag Anda . (Jika belum ditambahkan)Sekarang kamu baik untuk pergi. Gunakan
ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
di mana saja di aplikasi.sumber
Saya memperbarui untuk menggunakan
ContextCompat.getColor(context, R.color.your_color);
tetapi kadang-kadang (Pada beberapa perangkat / versi Android. Saya tidak yakin) yang menyebabkan NullPointerExcepiton.Jadi untuk membuatnya bekerja pada semua perangkat / versi, saya kembali pada cara lama melakukannya, dalam kasus null pointer.
sumber
Resources.getColor(int, Theme)
jika Anda bisa? Anda seharusnya tidak menangkap pengecualian runtime.Untuk informasi lebih lanjut tentang penggunaan-kasus lain yang dapat membantu memunculkan pertanyaan ini dalam hasil pencarian, saya ingin menerapkan alpha ke warna yang didefinisikan dalam sumber daya saya.
Menggunakan jawaban yang benar @ sat:
sumber
Menemukan cara yang lebih mudah yang berfungsi juga:
sumber
Mengakses warna dari kelas non-aktivitas bisa jadi sulit. Salah satu alternatif yang saya temukan menggunakan
enum
.enum
menawarkan banyak fleksibilitas.sumber
Metode kerja terbaru:
sumber
Jika min Anda saat ini. Level API 23, Anda cukup menggunakan
getColor()
seperti yang kami gunakan untukgetString()
:Jika Anda ingin di bawah level API
23
, cukup gunakan ini:Tetapi perhatikan bahwa
getResources().getColor()
sudah usang di Level API23
. Jika demikian ganti di atas dengan:ContextCompat : Helper untuk mengakses fitur dalam
Context
Jika Anda mau, Anda bisa membatasi dengan
SDK_INT
seperti di bawah ini:sumber
dalam aktivitas
dalam fragmen
sebagai contoh:
sumber