578 Stimmen

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

Ich versuche, ein Bild (als Hintergrund) auf einer Schaltfläche zu haben und fügen Sie dynamisch, je nachdem, was während der Laufzeit geschieht, etwas Text über/über das Bild.

Wenn ich die ImageButton Ich habe nicht einmal die Möglichkeit, Text hinzuzufügen. Wenn ich Button Ich kann Text hinzufügen, aber nur ein Bild definieren mit android:drawableBottom und ähnliche XML-Attribute wie definiert ici .

Diese Attribute kombinieren jedoch nur Text und 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 der Anzeige herauskommt).

Haben Sie einen Vorschlag, wie man das machen kann? Eine Idee wäre, entweder die Button ou ImageButton und überschreiben Sie die draw() -Methode. Aber mit meinem derzeitigen Wissensstand weiß ich nicht wirklich, wie man das macht (2D-Rendering). Vielleicht weiß jemand mit mehr Erfahrung eine Lösung oder zumindest einige Hinweise zu beginnen?

635voto

OneWorld Punkte 17093

Für Benutzer, die nur Hintergrund, Symbolbild und Text in einem einzigen Dokument zusammenfassen möchten Button aus verschiedenen Dateien: Setzen Sie auf eine Button Hintergrund, drawableTop/Bottom/Rigth/Left und Polsterung Attribute.

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/home_btn_test"
        android:drawableTop="@drawable/home_icon_test"
        android:textColor="#FFFFFF"
        android:id="@+id/ButtonTest"
        android:paddingTop="32sp"
        android:drawablePadding="-15sp"
        android:text="this is text"></Button>

Für anspruchsvollere Arrangements können Sie auch RelativeLayout (oder ein anderes Layout) und machen es anklickbar.

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

359voto

schlingel Punkte 8432

Für dieses Problem gibt es eine viel bessere Lösung.

Nehmen Sie einfach eine normale Button und verwenden Sie die drawableLeft und die gravity Attribute.

<Button
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:drawableLeft="@drawable/my_btn_icon"
  android:gravity="left|center_vertical" />

Auf diese Weise erhalten Sie eine Schaltfläche, die ein Symbol auf der linken Seite der Schaltfläche und den Text auf der rechten Seite des Symbols anzeigt vertikal zentriert .

211voto

m_vitaly Punkte 11618

Sie können anrufen setBackground() in einem Button um den Hintergrund der Schaltfläche festzulegen.

Jeder Text erscheint über dem Hintergrund.

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

68voto

Dhina k Punkte 1465

enter image description here

     <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/home_button"
            android:drawableLeft="@android:drawable/ic_menu_edit"
            android:drawablePadding="6dp"
            android:gravity="left|center"
            android:height="60dp"
            android:padding="6dp"
            android:text="AndroidDhina"
            android:textColor="#000"
            android:textStyle="bold" />

64voto

Kieran Punkte 830

Verwenden Sie einfach ein LinearLayout und tun Sie so, als sei es ein Button - Einstellung background y anklickbar ist der Schlüssel:

<LinearLayout
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:drawable/btn_default"
    android:clickable="true"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5dp"
        android:src="@drawable/image" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_margin="5dp"
        android:text="Do stuff" />
</LinearLayout>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X