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.