Saya mencoba mengatur warna latar belakang Tampilan (dalam hal ini Tombol).
Saya menggunakan kode ini:
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();
Itu menyebabkan Tombol menghilang dari layar. Apa yang saya lakukan salah, dan apa cara yang benar untuk mengubah warna latar belakang pada Tampilan apa pun?
Terima kasih.
Jawaban:
Anda membuat tombol Anda transparan. Byte pertama adalah alpha.
Mencoba
v.setBackgroundColor(0xFF00FF00);
sumber
0xff00ff00
, persis sama dengan apa yang disarankan dalam jawaban, kecuali itu juga memiliki manfaat yang dapat dibaca manusia . Sebagian besar pengembang lebih suka solusi yang bisa dibaca manusia.Saat Anda memanggil setBackgoundColor, ia menimpa / menghapus sumber daya latar belakang yang ada, termasuk batas, sudut, bantalan, dll. Apa yang ingin Anda lakukan adalah mengubah warna sumber daya latar belakang yang ada ...
Eksperimen dengan PorterDuff.Mode. * Untuk efek yang berbeda.
sumber
Beberapa pilihan untuk melakukan ini ...
Atur latar belakang menjadi hijau:
Atur latar belakang menjadi hijau dengan Alpha :
Atur latar belakang menjadi hijau dengan Color.GREEN konstan:
Tetapkan latar belakang ke definisi hijau di Colors.xml
dan menggunakan:
dan:
atau yang lebih panjang:
dan:
sumber
getResources().getColor(...)
mendapat stackoverflow.com/questions/31842983/...v.setBackgroundResource(R.color.myGreen);
ketika menggunakancolors.xml
invalidate
panggilan, karena Anda dapat melihatsetBackground...
metode yang sudah memanggil itu.v.setBackgroundColor(0x00FF00);
hanya kode mereka yang mereka katakan tidak berfungsi. Saya juga berharap itu transparan.Anda dapat mengatur hex-color ke sumber daya apa pun dengan:
sumber
Kode tidak mengatur tombol ke hijau. Sebaliknya, itu membuat tombol sama sekali tidak terlihat.
Penjelasan: nilai hex warna salah. Dengan nilai Alpha nol, warnanya tidak akan terlihat.
Nilai hex yang benar adalah
0xFF00FF00
untuk opacity hijau penuh. Nilai alfa apa pun antara 00 dan FF akan menyebabkan transparansi.sumber
Apa saja
View
? Apa yang Anda miliki benar, meskipun Anda harus menghentikaninvalidate()
panggilan.Namun, beberapa
Views
sudah memiliki latar belakang. AButton
, misalnya, sudah memiliki latar belakang: wajah tombol itu sendiri. Latar belakang ini adalahStateListDrawable
, yang dapat Anda temukan diandroid-2.1/data/res/drawable/btn_default.xml
dalam instalasi Android SDK Anda. Itu, pada gilirannya, mengacu pada sekelompok gambar bitmap sembilan-patch, tersedia dalam berbagai kepadatan. Anda perlu mengkloning dan memodifikasi semua itu untuk mencapai tujuan hijau Anda.Singkatnya, Anda akan lebih baik menemukan pola UI lain daripada berusaha mengubah latar belakang a
Button
.sumber
Untuk mengatur warna pertama yang terlihat di layar, Anda juga dapat melakukannya di tata letak yang relevan.xml (desain yang lebih baik) dengan menambahkan properti ini ke Tampilan yang relevan:
sumber
coba tambahkan:
sumber
Saya gunakan di API min 16, target 23
sumber
Anda dapat menggunakan sederhana:
sumber
sumber
Pertanyaan ini berbicara tentang mengubah warna latar belakang tampilan. Dalam salah satu jawaban, orang tersebut menjelaskan cara mengubah warna latar belakang saat runtime. Jelas Anda akan melihat bagaimana memodifikasi objek lain di layar, tetapi ini akan memberi Anda awal yang baik dengan setidaknya memungkinkan Anda untuk mengubah warna latar belakang tampilan pada klik tombol.
sumber
Menyatakan dengan Android 6 menggunakan ContextCompact
sumber
Anda dapat menggunakan sederhana:
sumber
Di kotlin Anda bisa melakukannya seperti ini:
Di mana
getColorCompat()
fungsi ekstensi:sumber
Menambahkan warna ke nilai warna sebelumnya, jadi saya memiliki warna yang berbeda.
Apa yang berhasil untuk saya adalah:
sumber
Membiarkan misalkan kita memiliki warna dasar di
values=>colors.xml
sebagai:jadi jika kita ingin menggunakan warna kustom kita ke dalam
setBackgroundColor(@ColorInt int Color)
maka kita hanya perlu penjelasan@SuppressLint("ResourceAsColor")
dengan konstruktor / metode yang akan digunakan sebagai:sumber
Anda harus memberikan
int
argumen.Contoh pertama:
Contoh kedua:
sumber
Ini seharusnya bekerja dengan baik:
v.setBackgroundColor(0xFF00FF00);
sumber
Saya mencoba semua cara di atas. Tetapi saya belum mencapai apa yang saya butuhkan. Ini usahaku. Jika Anda menggunakan hexcode untuk warna dan ingin mengatur warna sebagai latar belakang gambar, maka ini adalah kode kotlin.
sumber