Wie füge ich ein Symbol in der EditText-Ansicht in Android hinzu?

141

Ich möchte ein "Such" -Symbol hinzufügen, das in einem EditTextam linken Rand angezeigt wird. wie Suchfeld in Facebook Android App?

Adham
quelle

Antworten:

432

Verwenden Sie die android:drawableLeftEigenschaft im EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />
marcosbeirigo
quelle
3
Entschuldigung für die unklare Frage, ich möchte eine Schaltfläche hinzufügen, also wenn ich darauf klicke, macht es eine Aktion
Adham
20
Dies war genau die Lösung, die ich angesichts der Suchüberschrift erwartet hatte.
Thomas Ahle
32
Passen Sie außerdem die Polsterung mithilfe der drawablePaddingEigenschaft an.
Ryan R
Wie groß sollte dieses zeichnbare Symbol sein und in welchen Ordner soll ich es legen?
Kalpesh Lakhani
2
@ KalpeshLakhani: Normalerweise sollten der Edittext und die Drawables 32dp gemäß den Richtlinien für das Android-Design sein: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong
30

Sie können drawableLeft im XML festlegen, wie von marcos vorgeschlagen , aber Sie können es auch programmgesteuert festlegen - beispielsweise als Reaktion auf ein Ereignis. Verwenden Sie dazu die Methode setCompoundDrawablesWithIntrincisBounds (int, int, int, int) :

EditText editText = findViewById(R.id.myEditText);

// Set drawables for left, top, right, and bottom - send 0 for nothing
editTxt.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myDrawable, 0, 0, 0);
Peter Ajtai
quelle
Dies setzt den Hintergrund auf den EditText, nicht auf das Symbol / Bild am "linken Rand", das in der Frage deutlich erwähnt wird.
Paresh Mayani
@Paresh - deshalb habe ich die Antwort gelöscht. Ich habe jetzt eine programmatische Lösung zusätzlich zur ursprünglichen XML-Lösung hinzugefügt.
Peter Ajtai
1
Wie verstecke ich das Symbol programmgesteuert? Wann wird das Bearbeitungsfeld angeklickt?
Jagd
1
@Hunt - Stellen Sie einfach den Coumound ein, auf den gezeichnet werden kann, nullwenn Sie auf die Ansicht klicken .
Peter Ajtai
27

Wenn Sie das Standard-Drawable von Android verwenden möchten, können Sie Folgendes verwenden @android:drawable/ic_menu_search:

<EditText android:id="@+id/inputSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:hint="Search product.."
    android:inputType="textVisiblePassword"/>
Jonathan
quelle
3

Verwenden :

<EditText
    ..     
    android:drawableStart="@drawable/icon" />
Maher Abuthraa
quelle
0

benutze android: drawbleStart auf EditText

    <EditText
        ...     
        android:drawableStart="@drawable/my_icon" />
Rohit Jakhar
quelle
-1

Verwenden Sie ein relatives Layout und stellen Sie die Schaltfläche so ein, dass sie links von der Textansicht zum Ausrichten ausgerichtet wird, und stellen Sie den linken Abstand Ihrer Textansicht auf die Größe Ihrer Schaltfläche ein. Ich kann mir keinen guten Weg vorstellen, dies zu tun, ohne die Polsterung hart zu codieren: /

Sie können auch das apk-Tool verwenden , um die Facebook-apk zu entpacken und ihre Layoutdateien anzusehen.

Nathan Schwermann
quelle
1
Ich möchte erwähnen, dass die Dekompilierung in vielen Ländern zum Beispiel in der gesamten Europäischen Union gegen das Gesetz
verstößt. Seien