I'm mencoba untuk memiliki gambar (sebagai latar belakang) pada tombol dan tambahkan secara dinamis, tergantung pada apa yang's terjadi selama run-time, beberapa teks di atas/di atas gambar.
Jika saya menggunakan ImageButton
I don't bahkan memiliki kemungkinan untuk menambahkan teks.
Jika saya menggunakan Tombol
saya dapat menambahkan teks, tetapi hanya menentukan gambar dengan android:drawableBottom
dan mirip atribut XML seperti yang didefinisikan di sini.
Namun atribut-atribut ini hanya menggabungkan teks & gambar x - dan y-dimensi, yang berarti aku bisa menggambar gambar di sekitar teks, tetapi tidak di bawah/di bawah teks (dengan sumbu-z didefinisikan sebagai yang keluar dari layar).
Saran tentang cara untuk melakukan ini? Satu ide akan memperpanjang Tombol
atau ImageButton
dan menimpa draw()
-metode. Tapi dengan saya saat ini tingkat pengetahuan I don't benar-benar tahu bagaimana untuk melakukan hal ini (2D rendering). Mungkin seseorang dengan pengalaman lebih tahu solusi atau setidaknya beberapa petunjuk untuk memulai?
Untuk pengguna yang hanya ingin menempatkan Latar belakang, Ikon-Gambar dan Teks dalam satu Tombol
dari file yang berbeda: Set pada Tombol
latar belakang, drawableTop/Bawah/Rigth/Kiri dan padding atribut.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/home_btn_test"
android:drawableTop="@drawable/home_icon_test"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:paddingTop="32sp"
android:drawablePadding="-15sp"
android:text="this is text"></Button>
Untuk lebih canggih pengaturan anda juga dapat menggunakan RelativeLayout
dan membuatnya dapat diklik.
Tutorial: Besar tutorial yang mencakup kedua kasus: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
Ada's solusi yang jauh lebih baik untuk masalah ini.
Hanya mengambil normal Button
dan menggunakan drawableLeft
dan gravity
atribut.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
Dengan cara ini anda mendapatkan tombol yang menampilkan ikon di sisi kiri tombol dan teks di situs yang tepat ikon vertikal berpusat.
Anda dapat menghubungi setBackground()
di Tombol
untuk mengatur latar belakang tombol.
Teks yang akan ditampilkan di atas latar belakang.
Jika anda sedang mencari sesuatu yang mirip dalam xml yang ada adalah:
android:latar belakang
atribut yang bekerja dengan cara yang sama.
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:background="@drawable/home_button"
android:drawableLeft="@android:drawable/ic_menu_edit"
android:drawablePadding="6dp"
android:gravity="left|center"
android:height="60dp"
android:padding="6dp"
android:text="AndroidDhina"
android:textColor="#000"
android:textStyle="bold" />
Hanya menggunakan LinearLayout dan berpura-pura itu's Tombol
setting latar belakang
dan dapat diklik adalah kunci:
<LinearLayout
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:orientation="horizontal" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:src="@drawable/image" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:text="Do stuff" />
</LinearLayout>
Aku mengambil pendekatan yang berbeda dari yang tercantum di sini, dan itu bekerja dengan sangat baik, jadi saya ingin berbagi.
I'm menggunakan Gaya untuk membuat custom button dengan gambar di sebelah kiri dan teks di kanan-tengah. Cukup ikuti 4 "langkah mudah" di bawah ini:
I. Membuat anda 9 patch menggunakan setidaknya 3 berbeda PNG file 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 men-download atau membuat 24x24 PNG ikon.
ic_your_icon.png
Simpan semua di drawable/ folder pada perangkat Android anda proyek.
II. Membuat sebuah file XML yang disebut button_selector.xml dalam proyek anda di bawah drawable/ folder. Negara-negara harus menjadi seperti ini:
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />
III. Pergi ke nilai-nilai/ folder dan membuka atau membuat styles.xml file dan membuat kode XML berikut:
<style name="ButtonNormalText" parent="@android:style/Widget.Button">
<item name="android:textColor" >@color/black</item>
<item name="android:textSize" >12dip</item>
<item name="android:textStyle" >bold</item>
<item name="android:height" >44dip</item>
<item name="android:background" >@drawable/button_selector</item>
<item name="android:focusable" >true</item>
<item name="android:clickable" >true</item>
</style>
<style name="ButtonNormalTextWithIcon" parent="ButtonNormalText">
<item name="android:drawableLeft" >@drawable/ic_your_icon</item>
</style>
ButtonNormalTextWithIcon adalah "gaya anak" karena itu adalah memperluas ButtonNormalText ("orang tua gaya").
Perhatikan bahwa mengubah drawableLeft di ButtonNormalTextWithIcon gaya, untuk drawableRight, drawableTop atau drawableBottom anda dapat menempatkan ikon di posisi lain yang berkenaan dengan teks.
IV. Pergi ke tata letak/ folder di mana anda memiliki XML untuk UI dan pergi ke Tombol di mana anda ingin menerapkan gaya dan membuatnya terlihat seperti ini:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
Dan... voilà! Anda punya tombol dengan gambar di samping kiri.
Bagi saya, ini adalah cara yang lebih baik untuk melakukannya! karena melakukannya dengan cara ini anda dapat mengatur ukuran teks tombol terpisah dari icon yang anda inginkan untuk menampilkan dan menggunakan latar belakang yang sama drawable untuk beberapa tombol dengan ikon yang berbeda menghormati UI Android Panduan menggunakan gaya.
Anda juga dapat membuat tema untuk Aplikasi anda dan tambahkan "orang tua gaya" untuk itu agar semua tombol terlihat sama, dan menerapkan "gaya anak" dengan ikon hanya di mana anda membutuhkannya.
<Button android:id="@+id/imeageTextBtn"
android:layout_width="240dip"
android:layout_height="wrap_content"
android:text="Side Icon With Text Button"
android:textSize="20sp"
android:drawableLeft="@drawable/left_side_icon"
/>
Anda dapat menggunakan drawableTop
(juga drawableLeft
, dll) untuk gambar dan mengatur teks di bawah gambar dengan menambahkan gravity
kiri|center_vertical
<Button
android:id="@+id/btn_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@null"
android:drawableTop="@drawable/videos"
android:gravity="left|center_vertical"
android:onClick="onClickFragment"
android:text="Videos"
android:textColor="@color/white" />
Don't penggunaan normal
android:drawableLeft
dll... dengan vektor drawables, yang lain itu akan kecelakaan di menurunkan API versi. (Saya hadapi dalam hidup app)
Jika anda menggunakan vektor ditarik, maka anda harus
1.1.0-alpha01
, sehingga appcompat versi harus setidaknya 1.1.0-alpha01
. Saat ini versi terbaru adalah 1.1.0-alpha02
, menggunakan versi terbaru untuk keandalan yang lebih baik, lihat catatan rilis - link.
implementasi 'androidx.appcompat:appcompat:1.1.0-alpha02'
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
, app:drawableTopCompat
, app:drawableRightCompat
, app:drawableBottomCompat
, app:drawableStartCompat
dan aplikasi:drawableEndCompat
Jika anda don't perlu vektor ditarik, maka anda dapat
android:drawableLeft
, android:drawableRight
, android:drawableBottom
, android:drawableTop
TextView
, Tombol
& EditText
atau AppCompat
kelas.Anda dapat mencapai Output seperti di bawah ini -
Mungkin solusi saya akan cocok untuk banyak pengguna, saya harap begitu.
Apa yang saya sarankan adalah membuat TextView dengan gaya anda. Ia bekerja untuk saya sempurna, dan telah mendapat semua fitur, seperti tombol.
Pertama-tama mari kita membuat tombol gaya, yang dapat anda gunakan di mana-mana...saya menciptakan button_with_hover.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#8dbab3" />
<gradient android:angle="-90" android:startColor="#48608F" android:endColor="#48608F" />
</shape>
<!--#284682;-->
<!--border-color: #223b6f;-->
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#284682" />
<solid android:color="#284682"/>
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="@color/ControlColors" />
<gradient android:angle="-90" android:startColor="@color/ControlColors" android:endColor="@color/ControlColors" />
</shape>
</item>
</selector>
Kedua, Memungkinkan membuat textview tombol.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="right|bottom"
android:gravity="center"
android:padding="12dip"
android:background="@drawable/button_with_hover"
android:clickable="true"
android:drawableLeft="@android:drawable/btn_star_big_off"
android:textColor="#ffffffff"
android:text="Golden Gate" />
Dan ini adalah hasilnya. Kemudian gaya tombol kustom anda dengan warna atau sifat-sifat lain dan margin. Good luck
<Button
android:id="@+id/groups_button_bg"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Groups"
android:drawableTop="@drawable/[image]" />
android:drawableLeft
android:drawableRight
android:drawableBottom
android:drawableTop
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
Kode ini bekerja untuk saya sempurna
<LinearLayout
android:id="@+id/choosePhotosView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:clickable="true"
android:background="@drawable/transparent_button_bg_rev_selector">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/choose_photo"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:text="@string/choose_photos_tv"/>
</LinearLayout>
Anda dapat menggunakan ini:
<Button
android:id="@+id/reset_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/btn_med"
android:text="Reset all"
android:textColor="#ffffff" />
<Button
android:id="@+id/undo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:background="@drawable/btn_med"
android:text="Undo"
android:textColor="#ffffff" />
bahwa aku telah menempatkan gambar sebagai background
dan juga menambahkan teks..!