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?

Odpowiedzi:


432

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

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

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

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



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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.