Я выбрал подход, отличающийся от изложенного здесь, и он работает очень хорошо, поэтому я хотел поделиться им.
Я использую стиль для создания пользовательской кнопки с изображением слева и текстом в центре справа. Просто следуйте 4 "простым шагам" ниже:
I. Создайте свои 9 патчей, используя как минимум 3 разных файла PNG и инструмент, который у вас есть по адресу: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. После этого вы должны иметь:
button_normal.9.png, button_focused.9.png и button_pressed.9.png
Затем загрузите или создайте иконку PNG 24x24.
ic_your_icon.png
Сохраните все в папке drawable / в вашем проекте Android.
II. Создайте файл XML с именем button_selector.xml в своем проекте в папке drawable /. Состояния должны быть такими:
<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. Перейдите в папку values / и откройте или создайте файл 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 («родительский стиль»).
Обратите внимание, что изменяя drawableLeft в стиле ButtonNormalTextWithIcon на drawableRight, drawableTop или drawableBottom, вы можете поместить значок в другое положение по отношению к тексту.
Внутривенно Перейдите к макету / папке, где у вас есть 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>
И ... вуаля! Вы получили свою кнопку с изображением на левой стороне.
Для меня это лучший способ сделать это! делая это таким образом, вы можете управлять размером текста кнопки отдельно от значка, который вы хотите отобразить, и использовать один и тот же фон для рисования для нескольких кнопок с разными значками, соблюдая правила Android UI, используя стили.
Вы также можете создать тему для своего приложения и добавить к ней «родительский стиль», чтобы все кнопки выглядели одинаково, и применять «дочерний стиль» со значком только там, где это необходимо.