Я застосував інший підхід від наведеного тут, і він працює дуже добре, тому хотів поділитися ним.
Я використовую стиль для створення користувацької кнопки із зображенням зліва та текстом у правому центрі. Просто виконайте 4 "легких кроки" нижче:
I. Створіть 9 патчів, використовуючи щонайменше 3 різних файли PNG та інструмент, який ви маєте за адресою: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Після цього у вас повинно бути:
button_normal.9.png, button_focused.9.png та button_pression.9.png
Потім завантажте або створіть значок PNG розміром 24x24.
ic_your_icon.png
Збережіть все у папці, що витягується / в проекті Android.
II. Створіть у своєму проекті XML-файл під назвою button_selector.xml під папкою Dravable /. Штати повинні бути такими:
<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" />
ІІІ. Перейдіть до значень / папки та відкрийте або створіть файл styles.xml та створіть наступний XML-код:
<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 - це "дочірній стиль", оскільки він розширює ButtonNormalText ("батьківський стиль").
Зауважте, що змінивши DravableLeft у стилі ButtonNormalTextWithIcon, на dravableRight, dravableTop або dravableBottom, ви можете розмістити піктограму в іншому положенні щодо тексту.
IV. Перейдіть до макета / папки, де у вас є XML для інтерфейсу користувача, та перейдіть до кнопки, де ви хочете застосувати стиль та зробіть це таким чином:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
І ... вуаля! У вас є кнопка із зображенням зліва.
Для мене це кращий спосіб зробити це! тому що, роблячи це таким чином, ви можете керувати розміром тексту кнопки окремо від піктограми, яку ви хочете відобразити, і використовувати один і той же фон, який можна малювати для декількох кнопок з різними значками, дотримуючись Правил користувальницького інтерфейсу користуючись стилями.
Ви також можете створити тему для своєї програми та додати до неї "батьківський стиль", щоб усі кнопки виглядали однаково, а застосувати "дочірній стиль" із піктограмою лише там, де вам це потрібно.