¿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?

Respuestas:


432

Use la android:drawableLeftpropiedad en EditText.

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

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

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



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


1
Me gustaría mencionar que la descompilación es
ilegal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.