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.

Marcos Vasconcelos
la source
Je ne sais pas si c'est possible ... Vous pouvez toujours faire vos boutons personnalisés, un peu plus petits.
gnclmorais
Copie
Rohit Vipin Mathews

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"
/>
el-milligano
la source
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"                 

 />
Android
la source
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é.

MarioB.
la source
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"                 

 />
Federico Ponzi
la source
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"
/>
Rajneesh Shukla
la source