Android hintergrund + text + icon für einen button

Ich würde gerne ein Bild einstellen, auf hintergrund einen text und ein Symbol auf der linken Seite des Textes.
Sehr einfach in iPhone, aber kann nicht herausfinden, wie man es bei Android, in der Größe veränderbar sein, die-Taste und halten Sie das Symbol + text position und der Abstand richtig.

iPhone:

Android hintergrund + text + icon für einen button

Android habe ich dieses:

Android hintergrund + text + icon für einen button

Den xml-code:

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

Habe den code aus hier.

Wenn ich android:drawableLeft , als das Symbol gehen, um die meisten linken Teil.

Android hintergrund + text + icon für einen button

Wenn ich die Wiedergabe starte mit semi hardcoded Polstern, als ich anders sehen-diff-devives: ( Telefon und Tabelle)

Wenn ich die android:gravity="left|center_vertical" als es dann so Aussehen:

Android hintergrund + text + icon für einen button

Der text ist variabel: es wird sich ändern, wenn der Benutzer die Sprache ändern.

Wie man es richtig machen?

Möchte ich nicht downvote jemand die Antwort, aber bitte lies die Frage und die schlagen nicht vor, was ich versuchte schon. Auch gesagt, dass die hardcoded Updates funktioniert nicht gut.

Dies ist keine Hausaufgabe, sondern eine kommerzielle software Teil.

Hier ist ein Vorschlag-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 glaubst du, wie es Aussehen wird, wie die android:layout_marginLeft="10dip" auf Galaxy s4? Hier ist eine Vorschau:

Android hintergrund + text + icon für einen button

Dies ist nicht, was ich gefragt habe. "dip" oder "dp" oder "px" sollte nicht überall eingesetzt werden als Abstand vom linken, oberen, denn Handys hat HPDI, kleineren Bildschirm und Tablets, MDPI und wide-Auflösungen. Einfach nicht funktioniert auf mdpi und xxhdpi.

Nizam Antwort sehr nahe an einer guten Lösung:

Android hintergrund + text + icon für einen button

Haben Sie versucht, android:drawablePadding
müssen, eine dimension, die nicht einen drwable: Verursacht durch: java.lang.UnsupportedOperationException: Kann nicht konvertieren dimension: type=0x3
Überprüfen Sie das layout, das ich in meinem Teil Bearbeiten, dass es funktionieren wird.

InformationsquelleAutor | 2013-10-02

Schreibe einen Kommentar