Como adicionar um ícone na visualização EditText no Android?

141

Quero adicionar um ícone de "pesquisa" para aparecer dentro de um EditTextna borda esquerda? como caixa de pesquisa no aplicativo do Facebook para Android?

Adham
fonte

Respostas:

432

Use a android:drawableLeftpropriedade no EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />
marcosbeirigo
fonte
3
pena de questão claro, eu quero adicionar um botão, então wheni clique sobre ele, fazer alguma ação
Adham
20
Esta era apenas a solução que eu esperava, dado o cabeçalho da pesquisa.
Thomas Ahle
32
Além disso, ajuste o preenchimento usando a drawablePaddingpropriedade
Ryan R
então, qual deve ser o tamanho desse ícone desenhável e em qual pasta devo colocá-lo?
Kalpesh Lakhani
2
@KalpeshLakhani: Normalmente, o EditText e drawables deve ser 32dp de acordo com as diretrizes de design do Android: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong
30

Você pode definir drawableLeft no XML, conforme sugerido por marcos , mas também pode querer defini-lo programaticamente - por exemplo, em resposta a um evento. Para fazer isso, use o método 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
fonte
Isso define o segundo plano para o EditText, não o ícone / imagem na "Borda esquerda", que é claramente mencionada na pergunta.
Paresh Mayani
@Paresh - é por isso que apaguei a resposta. Agora editei para incluir uma solução programática, além da solução XML original.
31511 Peter Pantai
1
como ocultar programaticamente o ícone? quando a caixa de edição é clicada?
caça
1
@ Caça - Basta definir o desenho do coumound para nullquando a vista for clicada.
31812 Peter Ajtai
27

Se você deseja usar o drawable padrão do Android, pode usar o @android:drawable/ic_menu_searchseguinte:

<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
fonte
3

Usar :

<EditText
    ..     
    android:drawableStart="@drawable/icon" />
Maher Abuthraa
fonte
-1

Use um layout relativo e defina o botão para alinhar à esquerda da visualização de edição de texto e defina o preenchimento esquerdo da visualização de texto para o tamanho do seu botão. Não consigo pensar em uma boa maneira de fazer isso sem codificar o preenchimento: /

Você também pode usar a ferramenta apk para descompactar o apk do facebook e dar uma olhada nos arquivos de layout.

Nathan Schwermann
fonte
1
Gostaria de mencionar que decompilation é contra a lei em muitos países, por exemplo em toda União Europeia por isso, tenha cuidado :)
Paweł Byszewski