Supprimer la bordure de focus de EditText


83

Comment puis-je supprimer la bordure avec apparaît lors de la mise au point d'une vue EditText?

J'en ai besoin car cette vue a peu d'espace sur l'écran, mais sans la bordure c'est suffisant. Lors de l'exécution sur Emulator, une bordure orange apparaît, sur l'appareil une bordure bleue.


Je ne sais pas si c'est possible ... Vous pouvez toujours faire vos boutons personnalisés, un peu plus petits.
gnclmorais

Réponses:


188

Avez-vous essayé de définir l'arrière-plan de la EditTextcouleur transparente?

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" 
android:background="#00000000"
/>

21
"@android:color/transparent"est un peu plus explicite.
Alexander Malakhov

7
"@null"peut également être une option
Mangesh

3
cette réponse n'est pas correcte, car elle supprime non seulement la bordure de focus, mais également l'arrière-plan EditText non focalisé.
JensJensen

@Michael oui, car hex 0 et 00000 sont identiques. c'est toujours nul.
Brill Pappin

39
<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="@android:drawable/editbox_background_normal"                 

 />

12

C'est possible. Cependant, je ne le recommanderais pas car les utilisateurs sont habitués à certaines métaphores et vous ne devez pas changer l'UX général.

Vous pouvez appliquer différents styles à vos vues. Dans votre cas, il semble que vous vouliez un élément EditText View qui ressemble à un élément TextView. Dans ce cas, vous devrez spécifier d'autres arrière-plans pour EditText en fonction de l'état de l'élément View.

Dans votre layout.xml souhaité, vous attribuez un arrière-plan à votre EditText:

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" android:background="@drawable/custom"
/>

Ensuite, vous créez le custom.xml dans votre dossier dessinable et ajoutez ce qui suit:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
    android:drawable="@drawable/textfield_default" />
  <item android:state_window_focused="false" android:state_enabled="false"
    android:drawable="@drawable/textfield_disabled" />
  <item android:state_pressed="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:drawable="@drawable/textfield_default" />
  <item android:state_focused="true" android:drawable="@drawable/textfield_disabled" />
  <item android:drawable="@drawable/textfield_disabled" />
</selector>

Ce sont les états possibles de votre élément EditText View. Normalement, vous pouvez accéder directement aux dessinables de la plate-forme Android en utilisant @android:drawable/textfield_default, mais dans ce cas, les dessinables de champ de texte sont privés, vous devez donc les copier dans votre propre dossier dessinable. Les ressources d'origine se trouvent dans le dossier d'installation de votre SDK à l'adresse ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

Une fois que vous avez terminé, vous vous retrouvez avec un EditText qui ressemble à un TextView mais complètement sans ces bordures. Les bordures orange que vous avez vues dans l'émulateur sont les drawables Android par défaut. Les bleus sont spécifiques au fournisseur (éventuellement Samsung).

J'espère que cela a aidé et n'a pas beaucoup dérouté.


Je vais le tester bientôt. Et c'est pour Galaxy Tab.
Marcos Vasconcelos

bien .. cela peut fonctionner. Mais je ne veux pas dessiner tous ces arrière-plans. J'ai juste besoin de supprimer la bordure de celle par défaut, ce n'est pas possible?
Marcos Vasconcelos

L'exemple que j'ai posté est un dérivé de l'implémentation d'origine. La bordure EditText n'est pas dessinée individuellement. Il s'agit d'une image d'arrière-plan complète qui est définie en fonction de l'état actuel de l'élément View. En interne, la plate-forme Android définit une image d'arrière-plan complète à chaque fois. Vous pouvez voir les images à neuf correctifs dans votre installation de SDK dans ANDROID_HOME \ platform \ android- (API LEVEL) \ data \ res \ drawable - (* dpi) \.
MarioB.

6

C'est la solution la plus rapide:

<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="#00000000"                 

 />

0

Vous pouvez conserver la couleur d'arrière-plan transparente pour supprimer la bordure EditText sur le focus.

Méthode 1

<EditText 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
/>
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.