Android: Kombination von Text und Bild auf einem Button oder ImageButton

I'm versuchen, ein Bild (als Hintergrund) auf eine Schaltfläche haben und dynamisch hinzufügen, je nachdem, was während der Laufzeit geschieht, etwas Text über/über dem Bild.

Wenn ich ImageButton verwende, habe ich nicht einmal die Möglichkeit, Text hinzuzufügen. Wenn ich Button verwende, kann ich Text hinzufügen, aber nur ein Bild mit android:drawableBottom und ähnlichen XML-Attributen definieren, wie sie hier definiert sind.

Diese Attribute kombinieren jedoch nur Text & Bild in x- und y-Dimensionen, d.h. ich kann ein Bild um meinen Text herum zeichnen, aber nicht unter/unter meinem Text (wobei die z-Achse so definiert ist, dass sie aus dem Display kommt).

Irgendwelche Vorschläge, wie man das machen kann? Eine Idee wäre, entweder Button oder ImageButton zu erweitern und die draw()-Methode zu überschreiben. Aber mit meinem derzeitigen Wissensstand weiß ich nicht wirklich, wie man das macht (2D-Rendering). Vielleicht kennt jemand mit mehr Erfahrung eine Lösung oder zumindest ein paar Anhaltspunkte für den Anfang?

Für Benutzer, die nur Hintergrund, Icon-Bild und Text in einen Button aus verschiedenen Dateien einfügen wollen: Setzen Sie auf einen Button Hintergrund, drawableTop/Bottom/Rigth/Left und padding Attribute.

Für eine anspruchsvollere Anordnung können Sie auch RelativeLayout verwenden und es klickbar machen.

Tutorial: Großartiges 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

Kommentare (9)

Es gibt eine viel bessere Lösung für dieses Problem.

Nehmen Sie einfach einen normalen "Button" und verwenden Sie die Attribute "DrawableLeft" und "Gravity".

Auf diese Weise erhält man einen Button, der ein Icon auf der linken Seite des Buttons anzeigt und den Text auf der rechten Seite des Icons vertikal zentriert.

Kommentare (9)
Lösung

Sie können setBackground() auf einer Schaltfläche aufrufen, um den Hintergrund der Schaltfläche einzustellen.

Jeder Text erscheint dann über dem Hintergrund.

Wenn Sie nach etwas Ähnlichem in xml suchen, gibt es das: android:background Attribut, das auf die gleiche Weise funktioniert.

Kommentare (5)