Tomé un enfoque diferente de los que se indican aquí, y está funcionando muy bien, así que quería compartirlo.
Estoy usando un estilo para crear un botón personalizado con imagen a la izquierda y texto en el centro-derecha. Simplemente siga los 4 "pasos fáciles" a continuación:
I. Cree sus 9 parches usando al menos 3 archivos PNG diferentes y la herramienta que tiene en: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Después de esto deberías tener:
button_normal.9.png, button_focused.9.png y button_pressed.9.png
Luego, descargue o cree un icono PNG 24x24.
ic_your_icon.png
Guarde todo en la carpeta dibujable / en su proyecto de Android.
II Cree un archivo XML llamado button_selector.xml en su proyecto en la carpeta / dibujable. Los estados deberían ser así:
<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. Vaya a la carpeta valores / y abra o cree el archivo styles.xml y cree el siguiente código 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 es un "estilo secundario" porque está extendiendo ButtonNormalText (el "estilo principal").
Tenga en cuenta que al cambiar drawableLeft en el estilo ButtonNormalTextWithIcon a drawableRight, drawableTop o drawableBottom, puede colocar el icono en otra posición con respecto al texto.
IV. Vaya al diseño / carpeta donde tiene su XML para la interfaz de usuario y vaya al botón donde desea aplicar el estilo y haga que se vea así:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
¡Y voilá! Tienes tu botón con una imagen en el lado izquierdo.
¡Para mí, esta es la mejor manera de hacerlo! porque al hacerlo de esta manera, puede administrar el tamaño del texto del botón por separado del icono que desea mostrar y usar el mismo fondo dibujable para varios botones con diferentes iconos respetando las Directrices de la interfaz de usuario de Android usando estilos.
También puede crear un tema para su aplicación y agregarle el "estilo principal" para que todos los botones se vean iguales, y aplicar el "estilo secundario" con el ícono solo donde lo necesite.