Comment obtenir le texte d'un TextView
doit être justifié (avec du texte à fleur de peau à gauche et à droite) ?
J'ai trouvé une solution possible ici mais cela ne fonctionne pas (même si vous changez vertical-center en center_vertical, etc).
Comment obtenir le texte d'un TextView
doit être justifié (avec du texte à fleur de peau à gauche et à droite) ?
J'ai trouvé une solution possible ici mais cela ne fonctionne pas (même si vous changez vertical-center en center_vertical, etc).
Je ne crois pas qu'Android supporte une justification complète.
MISE À JOUR 2018-01-01 : Compatible avec Android 8.0+. modes de justification avec TextView
.
Après une analyse plus approfondie, vous pourriez essayer Android:gravity="fill_horizontal". Cela est décrit comme "Augmenter la taille horizontale de l'objet si nécessaire pour qu'il remplisse complètement son conteneur", mais je ne sais pas comment ils "augmentent" le texte.
Android:gravity="fill_horizontal" n'a pas fonctionné non plus. Il semble qu'Android ne supporte pas la justification après tout, oh bien :)
Non, vous ne pouvez pas définir la propriété comme la gravité. Mais vous pouvez toujours définir la justification de votre texte en prenant la vue web au lieu de la vue texte. Vous pouvez vous référer à sceau.io/2010/12/seul moyen de s'aligner sur les textes dans les blocs.html . (Volé de stackoverflow.com/questions/5976627/ )
La réponse de @CommonsWare est correcte. Android 8.0+ prend en charge la "Justification complète" (ou simplement "Justification", comme on l'appelle parfois de manière ambiguë).
Android prend également en charge l'"alignement du texte à gauche/à droite". Voir l'article de wikipedia sur Justification pour la distinction. De nombreuses personnes considèrent que le concept de "justification" englobe la justification complète ainsi que l'alignement du texte à gauche et à droite, et c'est ce qu'elles recherchent lorsqu'elles veulent faire un alignement du texte à gauche et à droite. Cette réponse explique comment réaliser l'alignement gauche/droite du texte.
Il est possible d'obtenir un alignement du texte à gauche et à droite (par opposition à une justification complète, comme le demande la question). Pour la démonstration, je vais utiliser un formulaire de base à deux colonnes (étiquettes dans la colonne de gauche et champs de texte dans la colonne de droite) comme exemple. Dans cet exemple, le texte des étiquettes de la colonne de gauche sera aligné à droite afin qu'il apparaisse au même niveau que les champs de texte de la colonne de droite.
Dans la mise en page XML, vous pouvez faire en sorte que les éléments TextView eux-mêmes (la colonne de gauche) soient alignés sur la droite en ajoutant l'attribut suivant dans tous les TextViews :
<TextView
...
android:layout_gravity="center_vertical|end">
...
</TextView>
Cependant, si le texte s'étend sur plusieurs lignes, il sera toujours aligné à gauche dans le TextView. L'ajout de l'attribut suivant permet d'aligner le texte réel sur la droite (avec un décalage vers la gauche) à l'intérieur du TextView :
<TextView
...
android:gravity="end">
...
</TextView>
Ainsi, le gravité spécifie comment aligner le texte à l'intérieur du TextView. layout_gravity spécifie comment aligner/présenter l'élément TextView lui-même.
Si je comprends bien, et compte tenu des résultats des tests effectués, tout ce que cela fait, c'est aligner le texte à gauche ou à droite. Cela ne justifie pas le texte, n'est-ce pas ?
Excellent. Juste pour ajouter, si vous voulez une justification centrale, vous pouvez faire android:layout_gravity="center_horizontal|center"
android:gravity="center"
.
Cela fonctionne définitivement pour mon cas sur texte d'entrée et aperçu du texte pour la langue arabe de droite à gauche entrée et affichage
Pour justifier le texte dans Android, j'ai utilisé WebView
setContentView(R.layout.main);
WebView view = new WebView(this);
view.setVerticalScrollBarEnabled(false);
((LinearLayout)findViewById(R.id.inset_web_view)).addView(view);
view.loadData(getString(R.string.hello), "text/html; charset=utf-8", "utf-8");
et html.
<string name="hello">
<![CDATA[
<html>
<head></head>
<body style="text-align:justify;color:gray;background-color:black;">
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc pellentesque, urna
nec hendrerit pellentesque, risus massa
</body>
</html>
]]>
</string>
Je ne peux pas encore télécharger d'images pour le prouver, mais "ça marche pour moi".
C'est une bonne solution. Pour info, vous n'avez pas besoin de la plupart du html supplémentaire. La balise body avec le texte aligné est suffisante.
Cela fonctionne bien. Notez que vous pouvez rendre l'arrière-plan transparent en suivant les instructions suivantes view.loadData()
avec view.setBackgroundColor("#00000000")
.
Nous avons créé une classe simple pour cela. Il existe actuellement deux méthodes pour obtenir ce que vous recherchez. Les deux requièrent PAS DE VISUALISATION WEB et SUPPORTS SPANNABLES .
BIBLIOTHEQUE : https://github.com/bluejamesbond/TextJustify-Android
SUPPORTS : Android 2.0 à 5.X
SETUP
// Please visit Github for latest setup instructions.
SCREENHOT
C'est une aide précieuse, mais en l'utilisant, mes TextViews ne gardent pas le format original, je pense aux marges, au style du texte, et je pense que la taille du texte non plus, continuez à travailler dessus, cela devrait être une aide précieuse.
Eh bien, je ne peux pas établir ces classes. L'une d'entre elles n'a pas de nom de paquet, l'autre donne une erreur jaune. En fait, je ne peux pas faire confiance.
Belle bibliothèque, mais je ne sais toujours pas comment ajouter une mise en forme au texte en utilisant cette bibliothèque.
Je recommanderais celui-ci, principalement parce qu'il est basé sur le textview original du sdk officiel d'Android, qui à mon avis est beaucoup plus léger que la technique du webview que beaucoup de gens postent concernant ce sujet commun. Si vous construisez une application qui doit être économe en mémoire, en utilisant des objets listview par exemple, vous pouvez envisager d'utiliser quelque chose comme ceci. J'ai déjà essayé, et cela fonctionne comme prévu. Si vous en connaissez une autre meilleure comme celle-ci, merci de partager votre expérience avec moi.
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.
0 votes
La réponse de @Jimbo est correcte, il travaille définitivement pour mon cas sur texte d'entrée et aperçu du texte pour la langue arabe, la saisie et l'affichage se font de droite à gauche, mais pour la saisie du texte, j'ai dû ajouter gravity="right".
0 votes
Vous pouvez utiliser github.com/pouriaHemmati/JustifiedTextView
0 votes
github.com/amilcar-sr/JustifiedTextView peut être utilisé