Tôi đã thực hiện một cách tiếp cận khác với những cách đã nêu ở đây, và nó đang hoạt động rất tốt, vì vậy tôi muốn chia sẻ nó.
Tôi đang sử dụng Kiểu để tạo nút tùy chỉnh với hình ảnh ở bên trái và văn bản ở giữa bên phải. Chỉ cần làm theo 4 "bước dễ dàng" dưới đây:
I. Tạo 9 bản vá của bạn bằng cách sử dụng ít nhất 3 tệp PNG khác nhau và công cụ bạn có tại: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Sau này, bạn nên có:
button_n normal.9.png, button_f Focused.9.png và button_pressed.9.png
Sau đó tải xuống hoặc tạo biểu tượng 24x24 PNG.
ic_your_icon.png
Lưu tất cả trong thư mục drawable / trên dự án Android của bạn.
II. Tạo một tệp XML có tên là button_selector.xml trong dự án của bạn trong thư mục drawable /. Các tiểu bang nên như thế này:
<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. Chuyển đến các giá trị / thư mục và mở hoặc tạo tệp Styles.xml và tạo mã XML sau:
<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>
NútN normalTextWithIcon là "kiểu con" bởi vì nó đang mở rộng NútN normalText ("kiểu cha mẹ").
Lưu ý rằng việc thay đổi drawableLeft theo kiểu NútN normalTextWithIcon, thành drawableRight, drawableTop hoặc drawableBottom, bạn có thể đặt biểu tượng ở vị trí khác đối với văn bản.
IV. Chuyển đến bố cục / thư mục nơi bạn có XML cho Giao diện người dùng và đi tới Nút nơi bạn muốn áp dụng kiểu và làm cho nó trông như thế này:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
Và Voila! Bạn có nút của bạn với một hình ảnh ở phía bên trái.
Đối với tôi, đây là cách tốt hơn để làm điều đó! bởi vì làm theo cách này, bạn có thể quản lý kích thước văn bản của nút riêng biệt với biểu tượng bạn muốn hiển thị và sử dụng cùng một nền có thể vẽ cho một số nút với các biểu tượng khác nhau tôn trọng Nguyên tắc giao diện người dùng Android bằng các kiểu.
Bạn cũng có thể tạo một chủ đề cho Ứng dụng của mình và thêm "kiểu cha mẹ" vào nó để tất cả các nút trông giống nhau và áp dụng "kiểu con" với biểu tượng chỉ khi bạn cần.