Comment ajouter une icône dans la vue EditText dans Android?

141

Je veux ajouter une icône "recherche" pour apparaître à l'intérieur d'un EditTextdans le bord gauche? comme le champ de recherche dans l'application Facebook Android?

Adham
la source

Réponses:

433

Utilisez la android:drawableLeftpropriété sur EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />
marcosbeirigo
la source
3
désolé pour la question peu claire, je veux ajouter un bouton, donc quand je clique dessus, il fait une action
Adham
20
C'était juste la solution que j'attendais, compte tenu de la rubrique de recherche.
Thomas Ahle
33
Ajustez également le remplissage à l'aide de la drawablePaddingpropriété.
Ryan R
Alors, quelle devrait être la taille de cette icône dessinable et dans quel dossier dois-je la placer?
Kalpesh Lakhani
2
@KalpeshLakhani: Habituellement, l'edittext et les drawables doivent être 32dp selon les directives de conception Android: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong
30

Vous pouvez définir drawableLeft dans le XML comme suggéré par marcos , mais vous pouvez également le définir par programme - par exemple en réponse à un événement. Pour ce faire, utilisez la méthode 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
la source
Cela définit l'arrière-plan sur le EditText, pas sur l'icône / l'image sur le «bord gauche» qui est clairement mentionné dans la question.
Paresh Mayani
@Paresh - c'est pourquoi j'ai supprimé la réponse. J'ai maintenant édité pour inclure une solution programmatique en plus de la solution XML originale.
Peter Ajtai
1
comment masquer par programme l'icône? lorsque vous cliquez sur la zone d'édition?
Chasse le
1
@Hunt - Réglez simplement le dessin sur le coumound nulllorsque vous cliquez sur la vue.
Peter Ajtai
27

Si vous souhaitez utiliser le dessin par défaut d'Android, vous pouvez utiliser @android:drawable/ic_menu_searchcomme ceci:

<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
la source
3

Utilisation :

<EditText
    ..     
    android:drawableStart="@drawable/icon" />
Maher Abuthraa
la source
0

Utilisez une disposition relative et définissez le bouton sur l'alignement à gauche de la vue de texte d'édition, et définissez le remplissage gauche de votre vue de texte à la taille de votre bouton. Je ne peux pas penser à un bon moyen de le faire sans coder en dur le remplissage: /

Vous pouvez également utiliser l' outil apk pour trier et décompresser l'apk facebook et jeter un œil à ses fichiers de mise en page.

Nathan Schwermann
la source
1
Je voudrais mentionner que la décompilation est illégale dans de nombreux pays, par exemple dans toute l'Union européenne, alors soyez
prudent
0

utiliser android: drawbleStart propery sur EditText

    <EditText
        ...     
        android:drawableStart="@drawable/my_icon" />
Rohit Jakhar
la source