Comment puis-je masquer la barre inférieure EditText (la ligne d'invite avec de petits empattements aux extrémités)?
Il pourrait y avoir une meilleure façon de faire ce que je veux: j'ai une mise en page avec un EditText. Normalement, cela s'affiche bien où l'utilisateur peut appuyer dessus et commencer à saisir ou à modifier du texte.
Parfois, cependant, j'aimerais utiliser la même disposition (simplifie une autre logique) pour afficher les mêmes données en lecture seule. Je veux que la présentation soit similaire - elle devrait avoir la même hauteur et la même police, mais pas la barre inférieure.
En tant que mesure provisoire, je vais implémenter cela en supprimant le EditText et en substituant un TextView. Je pense que cela donnera les résultats souhaités, mais il semble qu'un rond-point soit un moyen coûteux de faire quelque chose qui devrait être facile à faire en changeant les attributs.
la source
Réponses:
Vous pouvez définir le
EditText
pour avoir un dessin transparent transparent personnalisé ou simplement utiliserou
ou par programme
la source
android:background="@android:color/transparent"
android:background="@android:color/transparent"
entraîne le même problème de perte de marges ... Y a-t-il un exemple n'importe où de quelqu'un créant un tel dessinable personnalisé?Définissez l'arrière-plan sur null.
la source
android:background="@android:color/transparent
parce que@null
c'est effrayant.@null
effrayant?Vous pouvez définir
EditText
labackgroundTint
valeur de une couleur spécifique. Si vous définissez une couleur transparente, la barre inférieure devrait disparaître.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Mais vous pouvez l'utiliser dans
Api v21(Lollipop)
ou plusla source
Veuillez définir votre arrière-plan edittext comme
android:background="#00000000"
Ça va marcher.
la source
Vous pouvez le faire par programme en utilisant
setBackgroundResource
:la source
Ce que j'ai fait était de créer une forme dessinable et de la définir comme arrière-plan:
Remarque: J'ai en fait utilisé
@dimen
et des@color
valeurs pour les firelds, mais j'ai simplifié le fichier de forme ici pour plus de clarté.la source
En utilisant l'une ou l'autre propriété:
OU
travaillé pour moi pour cacher le soulignement du EditText.
Cependant, notez qu'il provoque ensuite un problème d'espacement avec le TextInputLayout que j'ai entouré le
EditText
la source
Voici un moyen de le masquer, sans ruiner le remplissage par défaut:
usage:
Mise à jour:
Si vous vous retrouvez toujours à passer null, vous pouvez codifier cela dans la méthode (et vous pourriez aussi bien surcharger EditText lui-même)
la source
Vous devez également définir un minWidth, sinon le curseur disparaîtra si le texte est vide.
la source
Dans mon cas, j'utilisais un arrière-plan personnalisé pour modifier le texte, donc définir l'arrière-plan sur @null ou définir la teinte sur transparent n'était pas la solution pour moi, donc j'ai joué un petit truc qui a très bien fonctionné pour moi, je viens de définir
et il fait le travail assez bien .. ce n'est pas la solution optimale mais ça marche
la source
J'ai quelque chose comme ça qui est très très utile:
où generalEditText est mon EditText et la couleur blanche est:
Cela ne supprimera pas le remplissage et votre EditText restera tel quel. Seule la ligne en bas sera supprimée. Parfois, il est plus utile de le faire comme ça.
Si vous utilisez
android:background="@null"
autant de suggestions, vous perdez le remplissage et EditText devient plus petit. Du moins, c'était mon cas.Une petite remarque est que si vous définissez background sur null et essayez le code java que j'ai fourni ci-dessus, votre application se bloquera juste après son exécution. (car il obtient l'arrière-plan mais il est nul.) Cela peut être évident, mais je pense que le souligner est important.
la source
J'ai découvert la chose la plus curieuse! Si vous le définissez à l'
null
aide de la liaison de données:android:background="@{null}"
Ensuite, non seulement l'arrière-plan est supprimé, mais la vue a toujours le remplissage calculé à partir de l'arrière-plan par défaut. Donc, pour une raison quelconque, le paramètre nul différé n'efface pas le remplissage du bg précédent.? Le rembourrage sur la vue est gauche / haut / droit 4dp, bas 13dp (à partir du niveau d'émulateur 21).
Peut ne pas avoir le même résultat final à tous les niveaux de l'API, alors méfiez-vous! Quelqu'un me dit si vous testez cela et que vous le trouvez fiable. (Notez également que le remplissage inférieur ressort à cause de ce soulignement qui était dans l'original. Donc, vous voudrez probablement le changer dans le XML, ou le réinitialiser dans le code après qu'il soit chargé à égalité en haut ...
la source
si votre texte d'édition a déjà un arrière-plan, vous pouvez utiliser ce qui suit.
la source
Si vous souhaitez que cela affecte toutes les instances de EditText et toute classe qui en hérite, vous devez définir dans votre thème la valeur de l'attribut, editTextBackground.
Un exemple du dessinable que j'utilise est:
Il s'agit d'une version légèrement modifiée de l'implémentation par défaut de la conception matérielle.
Une fois appliqué, tout votre EditText supprimera le soulignement dans l'application, et vous n'avez pas à appliquer le style à chacun manuellement.
la source
Utilisez simplement ceci
la source
Vous pouvez également définir un STYLE pour votre editText afin de pouvoir regrouper toutes les propriétés en commun. Il est très puissant si vous devez éditer plusieurs textes qui doivent avoir le comportement
Mettez le code dans res / values / styles.xml
Après cela, il vous suffit de l'appeler dans votre editText
la source
Utiliser par programme:
editText.setBackground(null)
De l'
xml
utilisation:android:background="@null"
la source
Ou
la source
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparent"
... ce n'est pas la solution optimale mais ça marche.
la source
Définir l'arrière-plan sur null
la source
Dans mon cas,
editText.setBackgroundResource(R.color.transparent);
c'est mieux.Il ne supprime pas le rembourrage par défaut, juste sous la barre.
R.color.transparent = #00000000
la source
si vous utilisez l'arrière-plan, vous devez utiliser cette balise
la source
Pour conserver les marges et la couleur d'arrière-plan, utilisez:
background.xml
Éditer le texte:
la source