Fondo + texto + icono de Android para un botón

Me gustaría tener una imagen configurada como fondo de un texto y un icono en el lado izquierdo del texto. Muy fácil en el iPhone, pero no sé cómo hacerlo en Android, cambiar el tamaño de ese botón y mantener el icono, la posición del texto y la distancia correctamente.

iPhone:

Android tengo esto:

El código xml es:

<Button
    android:id="@+id/btSettings"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/tvWhatever"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp"
    android:background="@drawable/bt_general"
    android:drawableTop="@drawable/settings_selected"
    android:text="@string/settings"
    android:textColor="#000000" />

Tomó el código deaquí.

Si yo usoandroid:drawableLeft , que el icono irá a la parte más izquierda.

Si empiezo a jugar con rellenos semi-codificados, entonces tendré una visión diferente de los dispositivos devives: (teléfono y mesa)

Si agrego elandroid:gravity="left|center_vertical" de lo que se verá así:

El texto es variable: cambiará, cuando el usuario cambie el idioma.

¿Cómo hacerlo correctamente?

No quiero menospreciar la respuesta de nadie, pero lea la pregunta y no sugiera lo que ya he intentado. También dijo que las correcciones codificadas no funcionan bien.

Esto no es una tarea, sino una parte de software comercial.

Aquí hay un código sugerido de respuestas:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bt_general"
        android:padding="20dip" >

        <ImageView
            android:id="@+id/xIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dip"
            android:src="@drawable/settings_selected" />

        <TextView
            android:id="@+id/xSettingsTxt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/settings"
            android:textColor="#000000" />
    </RelativeLayout>

¿Qué piensas cómo se verá elandroid:layout_marginLeft="10dip" en Galaxy s4? Aquí hay una vista previa:

Esto no es, lo que he pedido. "dip" o "dp" o "px" no deben usarse en ningún lugar como la distancia desde la izquierda, arriba, porque los teléfonos tienen HPDI, pantalla más pequeña y Tablets con MDPI y amplia resolución. Simple no funciona en mdpi, y xxhdpi.

Respuesta nizam Está muy cerca de una buena solución:

Respuestas a la pregunta(14)

Su respuesta a la pregunta