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?

Antworten:


432

Verwenden Sie die android:drawableLeftEigenschaft im EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />

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);

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"/>



-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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.