Jak dodać ikonę w widoku EditText w systemie Android?

141

Chcę dodać ikonę „wyszukiwania”, aby pojawiała się EditTextw lewej krawędzi? takie jak pole wyszukiwania w aplikacji Facebook na Androida?

Adham
źródło

Odpowiedzi:

432

Użyj android:drawableLeftwłaściwości w EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />
marcosbeirigo
źródło
3
przepraszam za niejasne pytanie, chcę dodać przycisk, więc po kliknięciu robi jakąś akcję
Adham
20
To było właśnie rozwiązanie, którego się spodziewałem, biorąc pod uwagę nagłówek wyszukiwania.
Thomas Ahle,
32
Dostosuj również wypełnienie za pomocą drawablePaddingwłaściwości.
Ryan R
więc jaki powinien być rozmiar tej ikony do rysowania i w którym folderze należy ją umieścić?
Kalpesh Lakhani
2
@KalpeshLakhani: Zwykle edittext i elementy do rysowania powinny mieć 32 dp zgodnie z wytycznymi dotyczącymi projektowania Androida: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong
30

Możesz ustawić drawableLeft w kodzie XML zgodnie z sugestią marcos , ale możesz też chcieć ustawić to programowo - na przykład w odpowiedzi na zdarzenie. Aby to zrobić, użyj metody 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
źródło
To ustawia tło na EditText, a nie na ikonę / obraz przy „lewej krawędzi”, o której jest wyraźnie mowa w pytaniu.
Paresh Mayani
@Paresh - dlatego usunąłem odpowiedź. Teraz zredagowałem, aby uwzględnić rozwiązanie programistyczne oprócz oryginalnego rozwiązania XML.
Peter Ajtai
1
jak programowo ukryć ikonę? po kliknięciu pola edycji?
Hunt
1
@ Hunt - Po prostu ustaw coumound drawable na nullpo kliknięciu widoku.
Peter Ajtai
27

Jeśli chcesz korzystać z domyślnego narzędzia do rysowania Androida, możesz użyć @android:drawable/ic_menu_searchtego:

<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
źródło
3

Posługiwać się :

<EditText
    ..     
    android:drawableStart="@drawable/icon" />
Maher Abuthraa
źródło
-1

Użyj względnego układu i ustaw przycisk, aby był wyrównany do lewej strony widoku edycji tekstu, i ustaw lewe wypełnienie widoku tekstu na rozmiar przycisku. Nie mogę wymyślić dobrego sposobu na zrobienie tego bez twardego kodowania wypełnienia: /

Możesz także użyć narzędzia apk, aby posortować rozpakuj plik APK na Facebooku i przyjrzyj się jego plikom układu.

Nathan Schwermann
źródło
1
Chciałbym wspomnieć, że dekompilacja jest niezgodna z prawem w wielu krajach, na przykład w całej Unii Europejskiej, więc proszę o ostrożność :)
Paweł Byszewski