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.