Comment obtenir que le texte d'un TextView
soit justifié (avec affleurement de texte sur les côtés gauche et droit)?
J'ai trouvé une solution possible ici , mais cela ne fonctionne pas (même si vous changez vertical-center en center_vertical, etc.).
Réponses:
Je ne pense pas qu'Android supporte une justification complète.
MISE À JOUR 2018-01-01 : Android 8.0+ prend en charge les modes de justification avec
TextView
.la source
La réponse @CommonsWare est correcte. Android 8.0+ prend en charge la «justification complète» (ou simplement la «justification», car elle est parfois appelée de manière ambiguë).
Android prend également en charge "Alignement du texte à gauche / droite". Voir l'article de wikipedia sur la justification de la distinction. Beaucoup de gens considèrent que le concept de `` justification '' englobe la justification complète ainsi que l'alignement du texte gauche / droite, ce qu'ils recherchent finalement lorsqu'ils veulent faire un alignement du texte gauche / droite. Cette réponse explique comment réaliser l'alignement du texte gauche / droite.
Il est possible d'obtenir un alignement du texte à gauche / droite (contrairement à la justification complète, comme la question le demande). Pour démontrer, j'utiliserai un formulaire de base à 2 colonnes (étiquettes dans la colonne de gauche et champs de texte dans la colonne de droite) comme exemple. Dans cet exemple, le texte dans les étiquettes de la colonne de gauche sera aligné à droite afin qu'il apparaisse aligné avec leurs champs de texte dans la colonne de droite.
Dans la disposition XML, vous pouvez obtenir les éléments TextView eux-mêmes (la colonne de gauche) pour qu'ils s'alignent à droite en ajoutant l'attribut suivant à l'intérieur de tous les TextViews:
Toutefois, si le texte passe à plusieurs lignes, le texte sera toujours aligné à gauche dans TextView. L'ajout de l'attribut suivant rend le texte réel aligné à droite (gauche irrégulier) à l'intérieur de TextView:
Ainsi, l' attribut gravity spécifie comment aligner le texte à l'intérieur de TextView layout_gravity spécifie comment aligner / mettre en page l'élément TextView lui-même.
la source
android:layout_gravity="center_horizontal|center"
android:gravity="center"
.justify
Pour justifier le texte dans Android, j'ai utilisé WebView
et html.
Je ne peux pas encore télécharger d'images pour le prouver mais "ça marche pour moi".
la source
view.loadData()
avecview.setBackgroundColor("#00000000")
.view.loadUrl()
works, alorsview.loadData()
que non. Je n'ai aucune idée pourquoi ce dernier ne fonctionne pas.MISE À JOUR
Nous avons créé une classe simple pour cela. Il existe actuellement deux méthodes pour réaliser ce que vous recherchez. Les deux ne nécessitent PAS DE WEBVIEW et SUPPORTTS SPANNABLES .
BIBLIOTHÈQUE : https://github.com/bluejamesbond/TextJustify-Android
SUPPORTS : Android 2.0 à 5.X
INSTALLER
CAPTURE D'ÉCRAN
la source
TextView
inAndroid O
offre une justification complète (nouvel alignement typographique) lui-même.Il vous suffit de faire ceci:
Kotlin
Java
la valeur par défaut est
JUSTIFICATION_MODE_NONE
.la source
Vous pouvez utiliser le projet JustifiedTextView pour Android dans github. il s'agit d'une vue personnalisée qui simule pour vous du texte justifié. Il prend en charge Android 2.0+ et les langues de droite à gauche.
la source
J'écris une base de widget sur textview native pour le faire.
github
la source
J'ai trouvé un moyen de résoudre ce problème, mais ce n'est peut-être pas très gracieux, mais l'effet n'est pas mauvais.
Son principe est de remplacer les espaces de chaque ligne par ImageSpan à largeur fixe (la couleur est transparente).
J'ai mis le code sur GitHub: https://github.com/twiceyuan/TextJustification
Aperçu:
la source
Disposition XML: déclarer WebView au lieu de TextView
Code Java: définissez les données de texte sur WebView
Cela peut résoudre votre problème. Son entièrement fonctionné pour moi.
la source
Voici comment je l'ai fait, je pense de la manière la plus élégante possible. Avec cette solution, les seules choses que vous devez faire dans vos mises en page sont:
xmlns
déclaration supplémentaireTextView
espace de noms de votre texte source d'Android en votre nouvel espace de nomsTextView
s parx.y.z.JustifiedTextView
Voici le code. Fonctionne parfaitement sur mes téléphones (Galaxy Nexus Android 4.0.2, Galaxy Teos Android 2.1). N'hésitez pas, bien sûr, à remplacer mon nom de package par le vôtre.
/assets/justified_textview.css :
/res/values/attrs.xml :
/res/layout/test.xml :
/src/net/bicou/myapp/widget/JustifiedTextView.java :
Nous devons définir le rendu sur le logiciel afin d'obtenir un fond transparent sur Android 3+. D'où le try-catch pour les anciennes versions d'Android.
J'espère que cela t'aides!
PS: veuillez noter qu'il pourrait être utile d'ajouter cela à l'ensemble de votre activité sur Android 3+ afin d'obtenir le comportement attendu:
android:hardwareAccelerated="false"
la source
Très simple, nous pouvons le faire dans le fichier xml
la source
Bien que le texte justifié ne soit toujours pas complet, vous pouvez désormais équilibrer les longueurs de ligne à
android:breakStrategy="balanced"
partir de l'API 23.http://developer.android.com/reference/android/widget/TextView.html#attr_android:breakStrategy
la source
J'écris ma propre classe pour résoudre ce problème, ici c'est juste que vous devez appeler la fonction de justification statique qui prend deux arguments
//Activité principale
// TextJustificationClass
// XML
la source
FILL_HORIZONTAL
est équivalent àCENTER_HORIZONTAL
. Vous pouvez voir cet extrait de code dans le code source de textview:la source
Il existe une vue personnalisée pour ce problème, cette vue de texte personnalisée prend en charge la vue de texte justifié.
Pillez à ceci: JustifiedTextView
Ajoutez la classe ci-dessus à votre dossier src et utilisez cet exemple de code pour ajouter à votre mise en page:
la source
voir ici dans le github
Importez simplement les deux fichiers "TextJustifyUtils.java" et "TextViewEx.java" dans votre projet.
et
Maintenant, si vous utilisez textView normal comme:
Utilisez simplement
Définissez une variable et définissez la justification pour être vraie,
la source
Texte Android Justify pour TextView XML
Justifiez simplement le texte Android en utilisant XML. Vous pouvez simplement implémenter dans le widget textview.
La valeur par défaut est
android:justificationMode="none"
la source
Je pense qu'il y a deux options:
Utilisez quelque chose comme Pango qui se spécialise dans cela via le NDK et restituez le texte sur une OpenGL ou une autre surface.
Utilisez Paint.measureText () et vos amis pour obtenir la longueur des mots et les disposer manuellement sur un canevas dans une vue personnalisée.
la source
Sur Android, pour justifier le texte à gauche et ne pas avoir de troncature de la couleur d'arrière-plan, essayez cela, cela a fonctionné pour moi, produisant des résultats cohérents sur Android, FF, c'est-à-dire & Chrome, mais vous devez mesurer l'espace restant entre les deux pour le texte lors du calcul du rembourrage.
Le hack est le
padding-right:1000px;
qui pousse le texte à l'extrême gauche.Toute tentative de gauche ou de justification de code en CSS ou HTML entraîne un arrière-plan qui n'est que de la moitié de la largeur.
la source
Pour le formatage HTML, vous n'avez pas besoin d'appeler le Webkit, vous pouvez l'utiliser
Html.fromHtml(text)
pour faire le travail.Source: http://developer.android.com/guide/topics/resources/string-resource.html
la source
Android ne prend pas encore en charge la justification complète. Nous pouvons utiliser Webview et justifier HTML au lieu d'utiliser textview. Cela fonctionne si bien. Si vous n'êtes pas clair, n'hésitez pas à me demander :)
la source
WebView
transparent
. J'ai une image de fond.Essayez cette solution dans le lien ci-dessous, créez simplement cette classe dans le dossier du projet et utilisez-la. Ça fonctionne bien pour moi :)
Justifier du texte dans une application Android à l'aide d'une WebView mais présentant une interface de type TextView?
la source
Justification du contenu TextView: ses gars simples utilisent simplement android: justificationMode = "inter_word" dans votre balise TextView.
la source
Essayez d'utiliser <
RelativeLayout >
(en veillant à remplir_parent), puis ajoutezandroid:layout_alignParentLeft="true"
etandroid:layout_alignParentRight="true"
aux éléments que vous souhaitez à l'extérieur GAUCHE et DROITE.BLAM, justifié!
la source
Vous devez définir
et
la source
Cela ne justifie pas vraiment votre texte mais
est le meilleur choix que vous ayez.
la source