Saya mencoba memiliki gambar (sebagai latar belakang) pada tombol dan menambahkan secara dinamis, tergantung pada apa yang terjadi selama waktu berjalan, beberapa teks di atas / di atas gambar.
Jika saya menggunakan, ImageButton
saya bahkan tidak memiliki kemungkinan untuk menambahkan teks. Jika saya menggunakan Button
saya dapat menambahkan teks tetapi hanya mendefinisikan gambar dengan android:drawableBottom
dan atribut XML yang sama seperti yang didefinisikan di sini .
Namun atribut ini hanya menggabungkan teks & gambar dalam dimensi x dan y, artinya saya dapat menggambar gambar di sekitar teks saya, tetapi tidak di bawah / di bawah teks saya (dengan sumbu z didefinisikan sebagai keluar dari tampilan).
Ada saran tentang cara untuk melakukan hal ini? Satu ide adalah memperluas Button
atau ImageButton
menimpa draw()
-metode. Tetapi dengan tingkat pengetahuan saya saat ini, saya tidak benar-benar tahu bagaimana melakukan ini (rendering 2D). Mungkin seseorang dengan pengalaman lebih tahu solusi atau setidaknya beberapa petunjuk untuk memulai?
Jawaban:
Anda dapat memanggil
setBackground()
aButton
untuk mengatur latar belakang tombol.Teks apa pun akan muncul di atas latar belakang.
Jika Anda mencari sesuatu yang serupa di xml ada:
android:background
atribut yang berfungsi dengan cara yang sama.sumber
Untuk pengguna yang hanya ingin meletakkan Background, Ikon-Gambar dan Teks dalam satu
Button
dari file yang berbeda: Atur padaButton
latar belakang, drawableTop / Bottom / Rigth / Kiri dan atribut padding .Untuk pengaturan yang lebih canggih, Anda juga dapat menggunakan
RelativeLayout
(atau tata letak lainnya) dan membuatnya dapat diklik.Tutorial: Tutorial hebat yang mencakup kedua kasus: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
sumber
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)
alih- alihandroid:drawableTop
danb.setPadding(0,32,0,0)
bukanandroid:paddingTop
.Ada solusi yang jauh lebih baik untuk masalah ini.
Hanya mengambil normal
Button
dan menggunakandrawableLeft
dangravity
atribut.Dengan cara ini Anda mendapatkan tombol yang menampilkan ikon di sisi kiri tombol dan teks di situs kanan ikon yang berpusat vertikal .
sumber
sumber
Cukup gunakan LinearLayout dan anggap itu
Button
- pengaturanbackground
dan dapat diklik adalah kuncinya:sumber
android:onClick
ke pandangan Andaganti saja
dengan
izz trik yang cukup bagus ..;)
sumber
Saya mengambil pendekatan yang berbeda dari yang dinyatakan di sini, dan itu bekerja dengan sangat baik, jadi saya ingin membagikannya.
Saya menggunakan Style untuk membuat tombol kustom dengan gambar di sebelah kiri dan teks di kanan-tengah. Cukup ikuti 4 "langkah mudah" di bawah:
I. Buat 9 tambalan Anda menggunakan setidaknya 3 file PNG berbeda dan alat yang Anda miliki di: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Setelah ini, Anda harus memiliki:
button_normal.9.png, button_focused.9.png dan button_pressed.9.png
Kemudian unduh atau buat ikon PNG 24x24.
ic_your_icon.png
Simpan semua dalam folder / drawable di proyek Android Anda.
II Buat file XML bernama button_selector.xml di proyek Anda di bawah drawable / folder. Negara harus seperti ini:
AKU AKU AKU. Buka nilai / folder dan buka atau buat file styles.xml dan buat kode XML berikut:
ButtonNormalTextWithIcon adalah "gaya anak" karena memperluas ButtonNormalText ("gaya induk").
Perhatikan bahwa mengubah drawableLeft dalam gaya ButtonNormalTextWithIcon menjadi drawableRight, drawableTop atau drawableBottom Anda dapat menempatkan ikon di posisi lain sehubungan dengan teks.
IV. Buka tata letak / folder tempat Anda memiliki XML untuk UI dan buka Tombol tempat Anda ingin menerapkan gaya dan buat tampilannya seperti ini:
Dan ... voila! Anda mendapatkan tombol Anda dengan gambar di sebelah kiri.
Bagi saya, ini adalah cara yang lebih baik untuk melakukannya! karena melakukannya dengan cara ini Anda dapat mengelola ukuran teks tombol secara terpisah dari ikon yang ingin Anda tampilkan dan menggunakan latar belakang yang sama untuk beberapa tombol dengan ikon berbeda yang menghormati Pedoman Android UI menggunakan gaya.
Anda juga dapat membuat tema untuk Aplikasi Anda dan menambahkan "gaya induk" ke dalamnya sehingga semua tombol terlihat sama, dan menerapkan "gaya anak" dengan ikon hanya di mana Anda membutuhkannya.
sumber
sumber
Anda dapat menggunakan
drawableTop
(jugadrawableLeft
, dll) untuk gambar dan mengatur teks di bawah gambar dengan menambahkangravity
left|center_vertical
sumber
Pembaruan Penting
Untuk digambar vektor
Jika Anda menggunakan gambar vektor, maka Anda harus
Itu dirilis dalam versi
1.1.0-alpha01
, jadi versi appcompat harus setidaknya1.1.0-alpha01
. Versi terbaru saat ini adalah1.1.0-alpha02
, gunakan versi terbaru untuk keandalan yang lebih baik, lihat catatan rilis - tautan .Gunakan
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
danapp:drawableEndCompat
Untuk drawable biasa
Jika Anda tidak perlu digambar vektor, maka Anda bisa
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
,Button
&EditText
atauAppCompat
.Anda dapat mencapai Output seperti di bawah ini -
sumber
xmlns:app="http://schemas.android.com/apk/res-auto"
namespace dan tidak melihat hal-hal yang kompatibel dengan aplikasi itu.For vector drawable
poin lagi.Mungkin solusi saya cocok untuk banyak pengguna, saya harap begitu.
Yang saya sarankan adalah membuat TextView dengan gaya Anda. Ini berfungsi dengan baik untuk saya, dan telah mendapatkan semua fitur, seperti tombol.
Pertama-tama mari kita buat gaya tombol, yang dapat Anda gunakan di mana-mana ... Saya membuat button_with_hover.xml
Kedua, Mari kita buat tombol textview.
Dan ini hasilnya. Kemudian gaya tombol kustom Anda dengan warna atau properti dan margin lainnya. Semoga berhasil
sumber
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
sumber
Kode ini berfungsi dengan baik untuk saya
sumber
Anda bisa menggunakan ini:
karena saya telah menempatkan gambar
background
dan juga menambahkan teks ..!sumber
Atau Anda dapat secara terprogram:
sumber
sumber