Android Hintergrund + Text + Symbol für eine Schaltfläche

Ich hätte gerne ein Bild als Hintergrund für einen Text und ein Symbol auf der linken Seite des Texts. Sehr einfach auf dem iPhone, aber ich kann nicht herausfinden, wie ich es auf Android mache, um die Größe dieser Schaltfläche zu ändern und die Position und den Abstand von Symbol + Text korrekt beizubehalten.

iPhone:

Android habe ich das:

Der XML-Code lautet:

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

Nahm den Code vonHier.

Wenn ich benutzeandroid:drawableLeft , dann geht das Icon zum linken Teil.

Wenn ich anfange, mit semi-hardcoded Paddings zu spielen, sehe ich diff devives anders: (Telefon und Tisch)

Wenn ich das hinzufügeandroid:gravity="left|center_vertical" dann sieht es so aus:

Der Text ist variabel: Er ändert sich, wenn der Benutzer die Sprache ändert.

Wie mache ich es richtig?

Ich möchte die Antwort von niemandem ablehnen, aber bitte lesen Sie die Frage und schlagen Sie nicht vor, was ich bereits ausprobiert habe. Außerdem funktionierten die hartkodierten Korrekturen nicht gut.

Dies ist keine Hausaufgabe, sondern ein kommerzieller Softwareteil.

Hier ist ein vorgeschlagener Code aus Antworten:

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

Was denkst du, wie es aussehen wird?android:layout_marginLeft="10dip" auf dem Galaxy s4? Hier ist eine Vorschau:

Das habe ich nicht gefragt. "dip" oder "dp" oder "px" sollte nirgendwo als Abstand von links oben verwendet werden, da Telefone HPDI, kleinere Bildschirme und Tablets MDPI und breite Auflösungen haben. Simple funktioniert nicht mit mdpi und xxhdpi.

Nizam antwortete ist sehr nah an einer guten Lösung:

Antworten auf die Frage(14)

Ihre Antwort auf die Frage