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 habe ich dieses:
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.
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:
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:
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:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht sollten Sie verwenden RelativeLayout mit abgerundeten Ecken, als TextView und Bildansicht innerhalb der it.
Dies war die erste richtige Antwort. Andere Gaben code, wenn dies bereits von Ihnen positiv bewertet werden. Einige Codes nicht so funktionieren wie expencted, sondern basiert auf der Idee, die ich machen kann. Bei weitem nicht so einfach, als in iPhone-Seite. Ich empfehle meinen Kunden, um die drop-icon von Android-Tasten oder habe ich mehr zu arbeiten, zu schauen und fühlen sich richtig auf alle Geräte, die elment
InformationsquelleAutor subasa
Versuchen Sie dies:
eigentlich ist dies ein Android OS bug für ALIGN_BASELINE nicht arbeiten und hat einen workaround
InformationsquelleAutor Nizam
Versuchen Sie dies:
Folgen Sie dieser : http://porcupineprogrammer.blogspot.in/2013/03/android-ui-struggles-making-button-with.html
InformationsquelleAutor Amit Prajapati
Hier ist, wie ich Dinge tun :
SCHICHTEN
SELECTOR
ABGERUNDETE ECKE
Verwenden Sie dieses auf die relative layout, mit einer Bildansicht und Knopf innen
dies hat keinen text-element
Ich habe es nicht geschrieben in der post, können Sie die EBENEN in einem RelativeLayout als hintergrund und im layout nur die Positionen der Elemente, die Sie verwenden möchten 😉
InformationsquelleAutor An-droid
Versuchen Sie unter layout -
und drawable/round_corner_drawable ist wie folgt:
Auch, wenn Sie verwenden möchten Ihr Bild als hintergrund, geben
android:layout_height="wrap_content"
und legen Sie es als hintergrund für die relative layout.p.s. Wenn man die verschiedenen Farbwerte für
startColor
,centerColor
undendColor
, erhalten Sie diesen Farbverlauf für Ihren hintergrund drawable. So ändern Sie die Farbwerte entsprechend.EDIT:
Versuchen Sie unter layout habe ich bearbeitet, um passen in verschiedenen screen-Größen mit abgerundeten Ecken drawable.
Das ist wahr, aber thats, warum ich angegeben, wenn Sie unterschiedlich große Bilder für hdpi, mdpi, xhdpi und ldpi, können Sie das Bild als hintergrund für RelativeLayout und legen Sie die Höhe wie wrap_content.
von Ihnen positiv bewertet werden, für Ihre Mühe, aber diese Lösung wird nicht zu meinen Anforderungen passen
Check den edit Teil meiner Antwort.
InformationsquelleAutor
speichern Sie die
xml
code untenround_background.xml
und legte es auf den drawable Ordner. verwenden Sie dies, wenn Sie wollen, aber Sie können auch Bild aus dem drawable-Ordner.die änderungen sehen zu können @matheszabi bearbeitete ich meine Antwort.
InformationsquelleAutor CENT1PEDE
Ich hatte erreicht, dass mit dem folgenden code. Kann verwendet werden, als eine einfachere alternative zu den oben genannten Lösungen.
die Schaltfläche Ansicht ist rot markiert(dies ist keine Liste posten, aber eine Schaltfläche, mit obigen code):
InformationsquelleAutor Dexter
Finden Sie eine Klasse namens CenteredIconButton erweitert-Button unter diesem link. Gearbeitet wie Magie. Wie haben Bild und den Text Zentrieren innerhalb einer Schaltfläche . Dank @atomicode
InformationsquelleAutor Visionwriter
Wenn Ihr button-Breite:
android:layout_width="wrap_content"
dann Ihr code wird wie folgt Aussehen:Sonst wenn Ihr button-Breite:
android:layout_width="match_parent"
dann Ihr code wird wie folgt Aussehen:Übrigens
android:paddingLeft="100dp"
ändern100
mit Ihrem passenden Wert.InformationsquelleAutor Ahmed Soliman Flasha
Können Sie paddingLeft-und paddingRight-man-Taste als die im iphone
InformationsquelleAutor Piyush
Versuchen, TextView,
In Java
wo Drawable Bild ist,
legen Sie Ihre gelben Symbol in der linken. Und stellen Sie Ihr Hintergrundbild zu Textview android:background="..."
das ist äquivalent mit android:drawableLeft
Ich habe diese Lösung auch: es ist äquivalent mit android:drawableLeft, bei weitem nicht das, was erwartet wird
InformationsquelleAutor No_Rulz
Ich nur implementiert, diese Art von button (und es eingesetzt wurde, in großem Maßstab app), ist es nicht wirklich kompliziert :
Inhalt large_button.xml :
Dann, es zu verwenden, ich muss nur noch das include-tag :
large_button_background ist ein Selektor, der Punkte auf die verschiedenen drawables für jede Schaltfläche Staat
Verwendete ich ein LinearLayout, die es erlaubt einfach center text & Symbole in der Schaltfläche. Es sollte auch machbar sein mit einem GridLayout. Wenn Sie wollen-center nur auf den text (ich glaube nicht, dass es toll aussieht, aber das ist Ihre Wahl), verwenden Sie ein RelativeLayout.
InformationsquelleAutor Teovald
Können Sie die Verwendung von android:paddingLeft -, android:paddingRight-und layout_width mit einer festen Breite, um das Problem zu lösen.
InformationsquelleAutor Jason Huh
Überprüfen Sie diesen link fand ich nützlich. http://porcupineprogrammer.blogspot.co.uk/2013/03/android-ui-struggles-making-button-with.html
InformationsquelleAutor Feay Jarana Manotumruksa