236 votes

Comment créer un EditText avec un bouton croix(x) à la fin de celui-ci ?

Existe-t-il un widget comme EditText qui contient un bouton de croix, ou bien existe-t-il une propriété de EditText par lequel il est créé automatiquement ? Je veux que le bouton de croix supprime le texte écrit dans la zone de texte. EditText .

2 votes

Il ne semble pas y avoir de widget standard pour cela. Mais vous trouvez quelques approches différentes avec une recherche Google pour "Android edittext clear button x". Je suppose donc qu'ils appellent cela "clear buttons". Voir aussi cette réponse à une question connexe : stackoverflow.com/questions/4175398/clear-edittext-on-click/

0 votes

Vous pouvez télécharger la source ici : github.com/GhOsTTT/editTextXbutton Passez une bonne journée

0 votes

Une autre question qui est essentiellement une duplication est implémenter les propriétés des champs d'affichage dans Android

170voto

Jaydeep Khamar Points 3806

Utilisez la mise en page suivante :

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="9dp"
    android:padding="5dp">

    <EditText
        android:id="@+id/calc_txt_Prise"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"  
        android:layout_marginTop="20dp"
        android:textSize="25dp"
        android:textColor="@color/gray"
        android:textStyle="bold"
        android:hint="@string/calc_txt_Prise"
        android:singleLine="true" />

    <Button
        android:id="@+id/calc_clear_txt_Prise"      
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_gravity="right|center_vertical"
        android:background="@drawable/delete" />

</FrameLayout>

Vous pouvez également utiliser l'identifiant du bouton et effectuer l'action que vous souhaitez sur sa méthode onClickListener.

8 votes

Cette méthode est inefficace. La réponse de Yanchenko est la bonne approche, à savoir l'utilisation de tableaux composés.

4 votes

Si vous choisissez cette solution et remarquez que l'image est beaucoup trop étirée, vous devriez probablement utiliser un ImageButton au lieu d'un bouton ordinaire.

5 votes

Bien que cette solution soit "inefficace", elle est beaucoup plus accessible pour les utilisateurs aveugles. L'utilisation d'un dessinable obligera vos utilisateurs à effectuer des opérations très compliquées pour effacer le texte - ce que les utilisateurs voyants peuvent faire rapidement avec le bouton X.

121voto

yanchenko Points 24142

Si vous utilisez DroidParts Je viens d'ajouter ClearableEditText .

Voici à quoi il ressemble avec un arrière-plan personnalisé et une icône claire réglée sur abs__ic_clear_holo_light de ActionBarSherlock :

enter image description here

11 votes

Meilleure solution parce que la classe étend EditText . Thx @yanchenko

0 votes

C'est bien, mais lorsque je tape sur l'icône, cela efface le texte mais affiche également le bouton "coller", n'est-ce pas étrange ?

2 votes

@stephanek. J'ai corrigé ce problème dans la branche de développement, il fera partie de la version 1.4.3.

21voto

AB1209 Points 2751

Vous pouvez également consulter cette page pour la réponse modifiée et étendue. ClearableEditText .

15voto

Eamorr Points 3420
Drawable x = getResources().getDrawable(R.drawable.x);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
mEditText.setCompoundDrawables(null, null, x, null);

où, x est :

enter image description here

9 votes

Il faut quand même attribuer un onClickListener, non ? Une recherche rapide m'a donné este . Je suppose que la meilleure solution est d'opter pour le modèle Framelayout. Merci quand même !

13voto

0x8BADF00D Points 316

Para drawable resource vous pouvez utiliser des images Android standard :

http://androiddrawables.com/Menu.html

Par exemple :

android:background="@android:drawable/ic_menu_close_clear_cancel"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X