Ich versuche, ein Bild (als Hintergrund) auf einer Schaltfläche zu haben und dynamisch, abhängig davon, was zur Laufzeit passiert, Text über / über dem Bild hinzuzufügen.
Wenn ich benutze, ImageButton
habe ich nicht einmal die Möglichkeit, Text hinzuzufügen. Wenn ich verwende, Button
kann ich Text hinzufügen, aber nur ein Bild mit android:drawableBottom
und ähnlichen XML-Attributen definieren, wie hier definiert .
Diese Attribute kombinieren jedoch nur Text und Bild in x- und y-Dimensionen, was bedeutet, dass ich ein Bild um meinen Text zeichnen kann, jedoch nicht unter / unter meinem Text (wobei die Z-Achse so definiert ist, dass sie aus der Anzeige kommt).
Irgendwelche Vorschläge dazu? Eine Idee wäre, die Methode entweder zu erweitern Button
oder zu ImageButton
überschreiben draw()
. Aber mit meinem derzeitigen Kenntnisstand weiß ich nicht wirklich, wie das geht (2D-Rendering). Vielleicht kennt jemand mit mehr Erfahrung eine Lösung oder zumindest einige Hinweise, um zu beginnen?
Antworten:
Sie können rufen
setBackground()
auf einButton
den Hintergrund der Taste.Jeder Text wird über dem Hintergrund angezeigt.
Wenn Sie nach etwas Ähnlichem in XML suchen, gibt es:
android:background
Attribut, das auf die gleiche Weise funktioniert.quelle
Für Benutzer, die nur Hintergrund, Symbol -Bild und Text
Button
aus verschiedenen Dateien in eine DateiButton
einfügen möchten : Auf Hintergrund setzen, DrawableTop / Bottom / Rigth / Left- und Padding- Attribute.Für eine anspruchsvollere Anordnung können Sie auch
RelativeLayout
(oder ein anderes Layout) verwenden und es anklickbar machen.Tutorial: Tolles Tutorial, das beide Fälle abdeckt: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
quelle
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)
anstelle vonandroid:drawableTop
undb.setPadding(0,32,0,0)
anstelle vonandroid:paddingTop
.Es gibt eine viel bessere Lösung für dieses Problem.
Nehmen Sie einfach eine normale
Button
und verwenden Sie diedrawableLeft
und diegravity
Attribute.Auf diese Weise erhalten Sie eine Schaltfläche, die ein Symbol auf der linken Seite der Schaltfläche und den Text an der rechten Stelle des Symbols vertikal zentriert anzeigt .
quelle
quelle
Verwenden Sie einfach ein LinearLayout und tun Sie so, als wäre es eine
Button
Einstellungbackground
und anklickbar ist der Schlüssel:quelle
android:onClick
Ihrer Ansicht hinzueinfach ersetzen
mit
izz ein ziemlich guter Trick ..;)
quelle
Ich habe einen anderen Ansatz gewählt als hier angegeben, und er funktioniert wirklich gut, deshalb wollte ich ihn teilen.
Ich verwende einen Stil, um eine benutzerdefinierte Schaltfläche mit Bild links und Text in der Mitte rechts zu erstellen. Befolgen Sie einfach die folgenden 4 "einfachen Schritte":
I. Erstellen Sie Ihre 9 Patches mit mindestens 3 verschiedenen PNG-Dateien und dem Tool, das Sie unter: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch haben. Danach sollten Sie haben:
button_normal.9.png, button_focused.9.png und button_pressed.9.png
Laden Sie dann ein 24x24 PNG-Symbol herunter oder erstellen Sie es.
ic_your_icon.png
Speichern Sie alles im Zeichen- / Ordner Ihres Android-Projekts.
II. Erstellen Sie in Ihrem Projekt eine XML-Datei mit dem Namen button_selector.xml unter dem Ordner drawable /. Die Staaten sollten so sein:
III. Gehen Sie zum Ordner values / und öffnen oder erstellen Sie die Datei styles.xml und erstellen Sie den folgenden XML-Code:
ButtonNormalTextWithIcon ist ein "untergeordneter Stil", da es ButtonNormalText (den "übergeordneten Stil") erweitert.
Beachten Sie, dass Sie das Symbol durch Ändern von drawableLeft im ButtonNormalTextWithIcon-Stil in drawableRight, drawableTop oder drawableBottom an einer anderen Position in Bezug auf den Text platzieren können.
IV. Gehen Sie zu dem Layout / Ordner, in dem Sie Ihr XML für die Benutzeroberfläche haben, und gehen Sie zu der Schaltfläche, in der Sie den Stil anwenden möchten, und lassen Sie ihn so aussehen:
Und ... voilà! Sie haben Ihren Knopf mit einem Bild auf der linken Seite.
Für mich ist das der bessere Weg! Auf diese Weise können Sie die Textgröße der Schaltfläche getrennt von dem Symbol, das Sie anzeigen möchten, verwalten und denselben Hintergrund verwenden, der für mehrere Schaltflächen mit unterschiedlichen Symbolen gezeichnet werden kann. Beachten Sie dabei die Richtlinien für die Android-Benutzeroberfläche mithilfe von Stilen.
Sie können auch ein Thema für Ihre App erstellen und den "übergeordneten Stil" hinzufügen, damit alle Schaltflächen gleich aussehen, und den "untergeordneten Stil" mit dem Symbol nur dort anwenden, wo Sie ihn benötigen.
quelle
quelle
Sie können
drawableTop
(auchdrawableLeft
usw.) für das Bild verwenden und Text unter dem Bild festlegen, indem Sie das hinzufügengravity
left|center_vertical
quelle
Wichtiges Update
Für Vektor zeichnbar
Wenn Sie Vector Drawable verwenden, müssen Sie
Es wurde in der Version veröffentlicht
1.1.0-alpha01
, daher sollte die Appcompat-Version mindestens verfügbar sein1.1.0-alpha01
. Aktuelle neueste Version ist1.1.0-alpha02
, verwenden Sie die neuesten Versionen für eine bessere Zuverlässigkeit, siehe Versionshinweise - Link .Verwenden Sie
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
undapp:drawableEndCompat
Zum regelmäßigen Zeichnen
Wenn Sie keinen Vektor zum Zeichnen benötigen, können Sie dies tun
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
,Button
&EditText
oderAppCompat
Klassen.Sie können eine Ausgabe wie unten erzielen -
quelle
xmlns:app="http://schemas.android.com/apk/res-auto"
Namespace und sehe diese App-kompatiblen Dinge nicht.For vector drawable
Punkt noch einmal.Wahrscheinlich wird meine Lösung für viele Benutzer geeignet sein, ich hoffe es.
Ich schlage vor, TextView mit Ihrem Stil zu erstellen. Es funktioniert perfekt für mich und hat alle Funktionen, wie ein Knopf.
Lassen Sie uns zunächst einen Schaltflächenstil erstellen, den Sie überall verwenden können ... Ich erstelle button_with_hover.xml
Zweitens erstellen wir eine Textansicht-Schaltfläche.
Und das ist ein Ergebnis. Gestalten Sie dann Ihre benutzerdefinierte Schaltfläche mit beliebigen Farben oder anderen Eigenschaften und Rändern. Viel Glück
quelle
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
quelle
Dieser Code funktioniert perfekt für mich
quelle
Sie können dies verwenden:
darin habe ich ein bild als
background
eingefügt und auch text hinzugefügt ..!quelle
Oder Sie können programmgesteuert:
quelle
quelle