Если вы не слишком много делаете с кнопкой (например, изменяете размер, создаете экземпляры нескольких из них), я просто создаю пользовательское представление XML с изображениями и текстовым представлением, расположенными рядом в контейнере.
Если вы часто меняете рисунок и текст, создайте собственный класс ImageView или Button.
EG textbutton.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/base"
android:orientation="horizontal"
android:layout_width="200dp"
android:layout_height="100dp"
android:gravity="center"
android:background="#ff623466">
<ImageView android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/icon"
android:gravity="center"
/>
<TextView android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="Hello!"
android:gravity="center"
/>
</LinearLayout>
Затем опубликуйте эту строку в main.xml или любом другом макетеВы хотите кнопку:
<include layout="@layout/textbutton" />