Umumnya Anda tidak dapat mengubah gaya secara terprogram; Anda bisa menyetel tampilan layar, atau bagian dari tata letak, atau tombol individual dalam tata letak XML Anda menggunakan tema atau gaya . Namun, tema dapat diterapkan secara terprogram .
Ada juga StateListDrawable
yang memungkinkan Anda menentukan drawable yang berbeda untuk setiap status tempat Anda Button
berada, apakah difokuskan, dipilih, ditekan, dinonaktifkan, dan sebagainya.
Misalnya, agar tombol Anda berubah warna saat ditekan, Anda dapat menentukan file XML yang disebut res/drawable/my_button.xml
direktori seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/btn_pressed" />
<item
android:state_pressed="false"
android:drawable="@drawable/btn_normal" />
</selector>
Anda kemudian dapat menerapkan pemilih ini ke a Button
dengan menyetel properti android:background="@drawable/my_button"
.
style
atribut Android , tetapi Anda dapat secara terprogram mengatur latar belakangButton
seperti yang Anda bisa dengan tampilan lain, jika itu sudah cukup. Selain itu, sebagaiButton
warisan dariTextView
, Anda dapat mengubah properti teks. Lihat saja dokumentasi API untuk item ini ... developer.android.com/reference/android/view/…Pertama-tama, Anda tidak perlu menggunakan inflater tata letak untuk membuat Tombol sederhana. Anda bisa menggunakan:
Jika Anda ingin memberi gaya pada tombol, Anda memiliki 2 pilihan: yang paling sederhana adalah menentukan semua elemen dalam kode, seperti yang disarankan oleh banyak jawaban lain:
Opsi lainnya adalah menentukan gaya dalam XML, dan menerapkannya ke tombol. Dalam kasus umum, Anda dapat menggunakan a
ContextThemeWrapper
untuk ini:Untuk mengubah atribut terkait teks pada TextView (atau subclassnya seperti Button) ada metode khusus:
Yang terakhir ini tidak dapat digunakan untuk mengubah semua atribut; misalnya untuk mengganti padding Anda perlu menggunakan a
ContextThemeWrapper
. Tetapi untuk warna teks, ukuran, dll. Anda dapat menggunakansetTextAppearance
.sumber
Ya, Anda dapat menggunakan misalnya di sebuah tombol
sumber
Anda dapat melakukan atribut gaya seperti ini:
di tempat:
sumber
Jika Anda menggunakan pustaka Dukungan, Anda cukup menggunakan
untuk TextView dan Buttons. Ada kelas serupa untuk Tampilan lainnya :-)
sumber
Untuk siapa pun yang mencari jawaban Material lihat posting SO ini: Tombol Mewarnai di Android dengan Desain Material dan AppCompat
Saya menggunakan kombinasi jawaban ini untuk menyetel warna teks default tombol menjadi putih untuk tombol saya: https://stackoverflow.com/a/32238489/3075340
Kemudian jawaban ini https://stackoverflow.com/a/34355919/3075340 untuk mengatur warna latar belakang secara terprogram. Kode untuk itu adalah:
your_colored_button
bisa berupaButton
tombol biasa atau AppCompat jika Anda mau - Saya menguji kode di atas dengan kedua jenis tombol dan berhasil.EDIT: Saya menemukan bahwa perangkat pra-lollipop tidak berfungsi dengan kode di atas. Lihat posting ini tentang cara menambahkan dukungan untuk perangkat pra-lollipop: https://stackoverflow.com/a/30277424/3075340
Pada dasarnya lakukan ini:
sumber
Bergantung pada atribut gaya apa yang ingin Anda ubah, Anda mungkin dapat menggunakan perpustakaan Paris:
Banyak atribut seperti background, padding, textSize, textColor, dll yang didukung.
Penafian: Saya yang menulis perpustakaan.
sumber
Jawaban @Dayerman dan @h_rules benar. Untuk memberikan contoh yang diuraikan dengan kode, Dalam folder drawable, buat file xml bernama button_disabled.xml
Lalu di Jawa,
Ini akan menyetel properti tombol menjadi nonaktif dan menyetel warna menjadi perak.
[Warna didefinisikan dalam color.xml sebagai:
sumber
Saat runtime, Anda tahu gaya tombol yang Anda inginkan. Jadi sebelumnya, di xml di folder layout, Anda dapat memiliki semua tombol siap pakai dengan gaya yang Anda butuhkan. Jadi di folder tata letak, Anda mungkin memiliki file bernama: button_style_1.xml. Konten file itu mungkin terlihat seperti:
Jika Anda bekerja dengan fragmen, maka di onCreateView Anda memekarkan tombol itu, seperti:
di mana penampung adalah penampung ViewGroup yang terkait dengan metode onCreateView yang Anda ganti saat membuat fragmen.
Butuh dua tombol lagi? Anda membuatnya seperti ini:
Anda dapat menyesuaikan tombol-tombol itu:
Kemudian Anda menambahkan tombol yang disesuaikan dan bergaya ke wadah tata letak yang juga Anda tingkatkan dalam metode onCreateView:
Dan begitulah cara Anda dapat bekerja secara dinamis dengan tombol bergaya.
sumber
Saya membuat antarmuka pembantu untuk ini menggunakan pola pemegang.
Sekarang untuk setiap gaya yang ingin Anda gunakan secara pragmatis cukup terapkan antarmuka, misalnya:
Deklarasikan gaya di Anda
attrs.xml
, gaya untuk contoh ini adalah:Berikut adalah gaya yang dideklarasikan
styles.xml
:Dan akhirnya penerapan pemegang gaya:
Saya menemukan ini sangat membantu karena dapat dengan mudah digunakan kembali dan menjaga kode tetap bersih dan bertele-tele, saya akan merekomendasikan menggunakan ini hanya sebagai variabel lokal sehingga kami dapat mengizinkan pengumpul sampah untuk melakukan tugasnya setelah kami selesai dengan mengatur semua gaya .
sumber
Saya menghadapi masalah yang sama baru-baru ini. inilah cara saya menyelesaikannya.
Terima kasih!
sumber