Saya mencoba membuat ColorStateList
program menggunakan ini:
ColorStateList stateList = new ColorStateList(states, colors);
Tapi saya tidak yakin apa dua parameternya.
Sesuai dokumentasi:
public ColorStateList (int[][] states, int[] colors)
Ditambahkan di API level 1
Membuat ColorStateList yang mengembalikan pemetaan yang ditentukan dari status ke warna.
Dapatkah seseorang tolong jelaskan saya cara membuat ini?
Apa arti dari array dua dimensi untuk negara?
android
android-color
Anukool
sumber
sumber
{pressed}
,{focused}
,{-enabled}
,{}
. Untuk beralih mungkin{checked, pressed}
,{pressed}
,{checked, focused}
,{focused}
,{checked}
,{-enabled}
,{}
. Atau toggle yang abaikan fokus:{checked, pressed}
,{pressed}
,{checked}
,{-enabled}
,{}
.Dimensi pertama adalah larik set keadaan, yang kedua adalah set negara itu sendiri. Array warna mencantumkan warna untuk setiap set keadaan yang cocok, oleh karena itu panjang array warna harus cocok dengan dimensi pertama dari array state (atau akan crash ketika negara "digunakan"). Di sini dan contoh:
semoga ini membantu.
Contoh EDIT: daftar status warna xml seperti:
akan terlihat seperti ini
sumber
new int[]{}
terakhir - seperti yang ditunjukkan pada blok kode terakhir dari jawaban ini. Satu-satunya nilai negasi yang biasanya saya gunakan adalah "-enable". Contoh lain, jika Anda ingin tiga warna berbeda: "difokuskan + ditekan", "terfokus + tidak ditekan", "ditekan + tidak fokus", Anda hanya dapat menempatkan{focused, pressed}
,{focused}
,{pressed}
. Yang "benar" pertama akan digunakan.{pressed}
,{-pressed}
,{focused}
,{-focused
}. Masalahnya adalah itu{pressed}
dan{-pressed}
mencakup SEMUA kemungkinan (tombolnya ditekan atau tidak ditekan), jadi tidak ada warna yang terdaftar nantinya yang akan digunakan.!Terkadang ini sudah cukup:
sumber
Sayangnya tidak ada solusi yang berfungsi untuk saya.
Ini adalah konstruktor dari kode sumber:
sumber
Berikut adalah contoh cara membuat
ColorList
program di Kotlin:sumber
Memantulkan jawaban oleh Jonathan Ellis , di Kotlin Anda dapat mendefinisikan fungsi pembantu untuk membuat kode sedikit lebih idiomatis dan lebih mudah dibaca, jadi Anda bisa menulis ini sebagai gantinya:
colorStateListOf
dapat diimplementasikan seperti ini:Saya juga punya:
Sehingga saya bisa memanggil nama fungsi yang sama, tidak peduli apakah itu pemilih atau warna tunggal.
sumber
Kelas pembangun saya untuk buat
ColorStateList
Contoh Menggunakan
sumber
jika Anda menggunakan sumber daya Colors.xml
sumber
getResources()
sudah ditinggalkan, sekarangContextCompat.getColor(this,R.color.colorname);
atauContextCompat.getColor(getActivity(),R.color.colorname);
untuk digunakan dalam Fragmennew int[0]
(sebagai elemen dalam daftar parameter pertama) adalah array panjang nol, dan mewakili pengaturan warna default. Ini dia satu-satunya elemen, yang berarti warna diterapkan ke semua status tombol. Ini sama dengan yangnew int[]{}
terlihat dalam jawaban Roger Alien.