Fundo Android + texto + ícone para um botão

Gostaria de ter uma imagem definida para o fundo de um texto e um ícone no lado esquerdo do texto. Muito fácil no iPhone, mas não consigo descobrir como fazê-lo no Android, para redimensionar esse botão e manter a posição e a distância do ícone + texto corretamente.

Iphone:

Android eu tenho isso:

O código xml é:

<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" />

Tomou o código deAqui.

Se eu usarandroid:drawableLeft , o ícone irá para a parte mais à esquerda.

Se eu começar a jogar com paddings semi-codificados, eu vou ter um olhar diferente em diff devives: (telefone e mesa)

Se eu adicionar oandroid:gravity="left|center_vertical" então ficará assim:

O texto é variável: ele será alterado quando o usuário alterar o idioma.

Como fazer isso corretamente?

Eu não quero recusar a resposta de ninguém, mas por favor leia a pergunta e não sugira o que eu já tentei. Também disse que as correções codificadas não funcionam bem.

Este não é um dever de casa, mas uma parte de software comercial.

Aqui está um código sugerido das respostas:

<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>

O que você acha como vai ficar parecido com oandroid:layout_marginLeft="10dip" no Galaxy S4? Aqui está uma prévia:

Isto não é o que eu pedi. "dip" ou "dp" ou "px" não deve ser usado em qualquer lugar como a distância da esquerda, superior, porque os telefones tem HPDI, tela menor e Tablets tem resoluções largas e MDPI. Simples não funciona em mdpi e xxhdpi.

Resposta Nizam está muito perto de uma boa solução:

questionAnswers(14)

yourAnswerToTheQuestion