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?

Respostas:


432

Use a android:drawableLeftpropriedade no EditText.

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

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

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



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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.