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?

Réponses:


433

Utilisez la android:drawableLeftpropriété sur EditText.

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

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

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


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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.