Tło Android + tekst + ikona przycisku

Chciałbym ustawić obraz na tle tekstu na nim i ikonę po lewej stronie tekstu. Bardzo łatwy w iPhone, ale nie można dowiedzieć się, jak to zrobić na Androidzie, aby zmienić rozmiar tego przycisku i odpowiednio trzymać ikonę + pozycję tekstu i odległość.

iPhone:

Android mam to:

Kod xml to:

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

Wziął kod ztutaj.

Jeśli używamandroid:drawableLeft , niż ikona przejdzie do najbardziej lewej części.

Jeśli zacznę grać z półtwardymi paddingami, będę miał inne spojrzenie na devfi: (telefon i stół)

Jeśli dodamandroid:gravity="left|center_vertical" niż będzie wyglądać tak:

Tekst jest zmienny: zmieni się, gdy użytkownik zmieni język.

Jak to zrobić poprawnie?

Nie chcę odrzucać niczyjej odpowiedzi, ale proszę przeczytać pytanie i nie sugerować tego, co już wypróbowałem. Powiedziano również, że zakodowane na stałe poprawki nie działają dobrze.

To nie jest praca domowa, ale część oprogramowania komercyjnego.

Oto sugerowany kod z odpowiedzi:

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

Jak myślisz, jak będzie wyglądaćandroid:layout_marginLeft="10dip" na Galaxy s4? Oto podgląd:

To nie jest to, o co prosiłem. „dip” lub „dp” lub „px” nie powinny być używane nigdzie jako odległość od lewej strony, ponieważ telefony mają HPDI, mniejszy ekran i tablety mają MDPI i szerokie rozdzielczości. Proste nie działa na mdpi i xxhdpi.

Odpowiedź Nizam jest bardzo blisko dobrego rozwiązania:

questionAnswers(14)

yourAnswerToTheQuestion