¿Cómo agregar un icono dentro de la vista EditText en Android?

141

Quiero agregar un icono de "búsqueda" para que aparezca dentro de un EditTexten el borde izquierdo. como el cuadro de búsqueda en la aplicación de Android de Facebook?

Adham
fuente

Respuestas:

432

Use la android:drawableLeftpropiedad en EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />
marcosbeirigo
fuente
3
lo siento por una pregunta poco clara, quiero agregar un botón, así que cuando hago clic en él, hago algo de acción
Adham
20
Esta fue la solución que esperaba, dado el título de búsqueda.
Thomas Ahle
32
Además, ajuste el relleno utilizando la drawablePaddingpropiedad
Ryan R
Entonces, ¿cuál debe ser el tamaño de ese icono dibujable y en qué carpeta debo colocarlo?
Kalpesh Lakhani
2
@KalpeshLakhani: por lo general, el texto de edición y los dibujos deben ser de 32 dp de acuerdo con las pautas de diseño de Android: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong
30

Puede establecer drawableLeft en el XML según lo sugerido por marcos , pero también puede establecerlo mediante programación, por ejemplo, en respuesta a un evento. Para hacer esto, use el 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
fuente
Esto establece el fondo para EditText, no el icono / imagen en el "Borde izquierdo" que se menciona claramente en la pregunta.
Paresh Mayani
@Paresh: por eso eliminé la respuesta. Ahora he editado para incluir una solución programática además de la solución XML original.
Peter Ajtai
1
¿Cómo ocultar programáticamente el icono? cuando se hace clic en el cuadro de edición?
Caza el
1
@Hunt: simplemente configure el cupón dibujable nullcuando se hace clic en la vista.
Peter Ajtai
27

Si quieres usar el dibujo por defecto de Android, puedes usarlo @android:drawable/ic_menu_searchasí:

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

Utilizar :

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

Use un diseño relativo y configure el botón para alinearlo a la izquierda de la vista de edición de texto, y configure el margen izquierdo de su vista de texto al tamaño de su botón. No puedo pensar en una buena manera de hacerlo sin codificar el relleno: /

También puede usar la herramienta apk para descomprimir el apk de Facebook y echar un vistazo a sus archivos de diseño.

Nathan Schwermann
fuente
1
Me gustaría mencionar que la descompilación es
ilegal