L'obtention de la hauteur de vue du texte avant de le rendre à la disposition de
Ne pouvait pas trouver une bonne solution calcul de textview taille où le texte a été mis en avant de rendu textview à disposition. Toute aide, veuillez
- il y a peut être un problème dans ce que vous essayez de faire. si vous réglez la hauteur à une certaine valeur (par exemple, 60dp) ok, mais si vous le réglez sur "wrap_content" , la hauteur dépendra de la taille de l'écran. de sorte que vous pourriez être à la recherche pour créer le textview par programme (en code Java)
- Je suis de la création d'e lecteur de livre et que je devrais savoir textview la hauteur de la façon dont beaucoup de texte, il s'adapte
- Si vous le réglez sur "wrap_content" , il se développera en fonction de son contenu. Si vous voulez vous assurer que l'utilisateur ne doit pas glisser verticalement, alors vous pouvez regarder dans viewflipper, viewpager etc.
- Avez-vous vérifié [cette Question] (stackoverflow.com/questions/15679147/...).
- Il est spannable du texte et des polices différentes dans un texte que je ne peut pas calculer la façon dont beaucoup de texte est assez pour une seule page.C'est pourquoi j'ai divisé le texte par des espaces et après l'ajout de chaque élément, il doit vérifier si textview n'a pas réussi à surmonter hauteur d'affichage.Pour que je connaisse textview de la hauteur et de le vérifier avant de le rendre à chaque fois que je ajouter du texte
- il n'est pas fonction du nombre de lignes de textview il y a différentes polices sont l'aide et de l'interligne n'est pas la même
- ce qui se passe lorsque l'utilisateur fait pivoter l'écran ? Si j'étais vous, je voudrais diviser le livre chapitre par chapitre. Sinon, l'ajout de mots un par un, par des calculs mathématiques, à chaque étape, il faudrait beaucoup de temps pour le chargement de l'annuaire.
- il est l'index de début de chaque page, si j'ai rotation d'affichage, il devrait commencer à calculer à partir de l'indice de la façon dont beaucoup de texte est assez pour la page.Il devrait y avoir une solution pour savoir textview de la hauteur avant de rendu sur la mise en page , mais je ne pouvais pas l'obtenir encore 🙁
- Eh bien, vous pourriez obtenir de l'appareil taille de l'écran. Mais comment voulez-vous obtenir le texte de la taille? avec différentes polices de caractères, etc. Je pense vraiment que ce n'est pas une bonne idée de calculer une taille totale d'un texte composé de différentes parties.
- disons que j'ai TextView tv alors si (la télévision.getTextHeight(mytext.sous-suite(beginIndex , les espacements[resume])) > (displayheight - StatusBarHeight - 2 * getPadding())) { setPageTextEndPoint(les espacements[cv - 1]); break; }
- getTextHeight? Je n'ai jamais entendu parler de cette fonction. Si vous pouvez le définir, alors vous avez votre solution 🙂
- Oui ma textview est personnalisé.Je dois mettre le code pour getTextHeight() la méthode je suis à la recherche de
Vous devez vous connecter pour publier un commentaire.
2 solutions
Utilisé la solution 1 au premier et a trouvé une solution 2 plus tard. Tous les deux, c'est vraiment ce que vous préférez.
Important est de s'assurer que vous avez obtenu toutes les dimensions de la droite depuis le mixage de la taille de la police sp ou px donnera tout à fait différente en fonction de quel écran vous tester.
Un exemple de base du projet est disponible à https://github.com/hanscappelle/SO-3654321
Solution 1 à l'aide de TextView et MeasureSpec
Principal problème avec la question d'origine est TextView ci-dessous la méthode doit être configuré comme notre TextView qui doit être rendu à la mise en page. Je pense que cette solution est utile pour de nombreuses personnes qui ont été confrontées à ce problème.
Et un exemple d'utilisation de cette:
Solution 2 en utilisant TextPaint et StaticLayout
Cette méthode s'appuie sur une TextPaint et StaticLayout qui donne aussi des résultats fiables sur toutes les API niveaux, j'ai testé jusqu'à présent. Faites attention aux unités de dimensions; tous doivent être en pixels!
Source: La mesure de la hauteur de texte tirés sur Toile ( Android )
De support_ms réponse, il y a un plus méthode simple pour prendre seulement un TextView comme paramètre.
Bonne réponse de @support_ms, mais je ne suis pas sûr de le point de créer une nouvelle TextView et de travailler sur l'ensemble de cette entrée params quand vous pourriez format de votre TextView d'abord, puis d'appeler la méthode statique avec un seul paramètre, la
TextView
lui-même!Aussi je ne suis pas sûr de savoir pourquoi un paramètre a été étiqueté
deviceWidth
je viens d'utiliser la largeur de laTextview
lui-même. Le mien étaitmatch_parent
et je suppose que toutTextView
avecwrap_content
peut ne pas fonctionner du tout. Mais qu'est ce que vous obtenez.Voici ma solution facile ses obtenir la taille avant d'être peint
https://stackoverflow.com/a/40133275/1240672
Obtenir la ligne de TextView avant de rendre
C'est mon code de base sur l'idée ci-dessus. C'est de travailler pour moi.
Remarque: Ce code doit également être définie pour de vrai textview sur l'écran