Comment puis-je définir du texte souligné dans un xml
fichier de mise en page Android ?
android
android-layout
fonts
Janusz
la source
la source
Réponses:
Cela peut être réalisé si vous utilisez un fichier xml de ressource de chaîne , qui prend en charge les balises HTML comme
<b></b>
,<i></i>
et<u></u>
.Si vous souhaitez souligner quelque chose de l'utilisation du code:
la source
<u>
balises ne fonctionne pas, par exemple parfois si vous utilisez une police personnalisée. Cependant, le sous-programme par défautUnderlineSpan
n'a pas encore échoué sur moi, donc je le recommanderais comme la solution la plus fiable.Vous pouvez essayer avec
la source
| Paint.ANTI_ALIAS_FLAG
aussi ou votre texte sera très net. Cela se manifeste le plus souvent dans les API inférieures.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
La réponse "acceptée" ci-dessus ne fonctionne PAS (lorsque vous essayez d'utiliser la chaîne comme
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Comme indiqué dans les documentations, vous devez échapper (parenthèse html encodée) le crochet d'ouverture des balises internes avec
<
, par exemple, le résultat devrait ressembler à:Ensuite, dans votre code, vous pouvez définir le texte avec:
la source
Contenu du fichier Strings.xml:
Le fichier xml de mise en page doit utiliser la ressource de chaîne ci-dessus avec les propriétés ci-dessous de textview, comme indiqué ci-dessous:
la source
Pour Button et TextView, c'est la manière la plus simple:
Bouton:
Affichage:
la source
Solution en une ligne
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
Il est un peu tard mais pourrait être utile à quelqu'un.
la source
Dans Kotlin, la fonction d'extension peut être utilisée. Cela ne peut être utilisé qu'à partir du code, pas du xml.
Usage:
la source
découvrez le style de bouton cliquable souligné:
strings.xml:
Résultat:
la source
L'approche la plus récente de dessiner du texte souligné est décrite par Romain Guy sur support avec le code source disponible sur GitHub . Cet exemple d'application expose deux implémentations possibles:
la source
Je sais que c'est une réponse tardive, mais j'ai trouvé une solution qui fonctionne assez bien ... J'ai pris la réponse d'Anthony Forloney pour souligner le texte dans le code et créé une sous-classe de TextView qui gère cela pour vous. Ensuite, vous pouvez simplement utiliser la sous-classe en XML chaque fois que vous souhaitez avoir un TextView souligné.
Voici la classe que j'ai créée:
Maintenant ... chaque fois que vous voulez créer une vue textuelle soulignée en XML, vous n'avez qu'à faire ce qui suit:
J'ai ajouté des options supplémentaires dans cet extrait XML pour montrer que mon exemple fonctionne avec la modification de la couleur, de la taille et du style du texte ...
J'espère que cela t'aides!
la source
Une façon plus propre au lieu de la
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
méthode consiste à utilisertextView.getPaint().setUnderlineText(true);
Et si vous devez désactiver ultérieurement le soulignement pour cette vue, comme dans une vue réutilisée dans un RecyclerView,
textView.getPaint().setUnderlineText(false);
la source
Utilisez simplement l'attribut dans le fichier de ressources de chaîne, par exemple
la source
J'ai utilisé ce dessin xml pour créer une bordure inférieure et j'ai appliqué le dessin comme arrière-plan à mon affichage de texte
la source
Une solution simple et flexible en xml:
la source
une autre solution consiste à créer une vue personnalisée qui étend TextView comme indiqué ci-dessous
et ajoutez simplement au xml comme indiqué ci-dessous
la source
J'ai simplifié la réponse de Samuel :
la source
J'ai créé cette méthode pour plus de facilité
Souligner TextView entier
Soulignez une partie de TextView
vérifiez ma réponse ici pour rendre le texte de soulignement cliquable ou souligner plusieurs parties de TextView
la source
essayez ce code
en XML
dans du code
Bonne chance!
la source
De plus, le code suivant n'imprimera pas le soulignement:
Utilisez plutôt le code suivant pour conserver le format de texte enrichi:
"Vous pouvez utiliser getString (int) ou getText (int) pour récupérer une chaîne. GetText (int) conserve tout style de texte enrichi appliqué à la chaîne." Documentation Android.
Reportez-vous à la documentation: https://developer.android.com/guide/topics/resources/string-resource.html
J'espère que ça aide.
la source
La réponse la plus votée est juste et la plus simple. Cependant, parfois, vous constaterez que cela ne fonctionne pas pour certaines polices, mais fonctionne pour d'autres (quel problème je viens de rencontrer en traitant le chinois).
La solution est de ne pas utiliser "WRAP_CONTENT" uniquement pour votre TextView, car il n'y a pas d'espace supplémentaire pour tracer la ligne. Vous pouvez définir une hauteur fixe pour votre TextView, ou utiliser android: paddingVertical avec WRAP_CONTENT.
la source
Notez le symbole d'échappement dans le fichier xml
la source
Pour faire cela à Kotlin:
yourTextView.paint?.isUnderlineText = true
la source
Il est assez tard pour répondre à cela, mais supposez que si quelqu'un veut obtenir le texte de manière dynamique, il peut utiliser cette simple ligne dans son code java qui fonctionne:
la source
J'ai eu un problème où j'utilise une police personnalisée et le soulignement créé avec le fichier de ressources trick (
<u>Underlined text</u>
) a fonctionné mais Android a réussi à transformer le soulignement en une sorte de creux.J'ai utilisé cette réponse pour dessiner moi-même une bordure sous la vue de texte: https://stackoverflow.com/a/10732993/664449 . De toute évidence, cela ne fonctionne pas pour le texte souligné partiel ou le texte multiligne.
la source