TextView.setTextSize se comporte de façon anormale - Comment définir la taille du texte de textview de façon dynamique pour différents écrans
Appel TextView.setTextSize()
fonctionne anormalement. Juste après l'appel à setTextSize
si nous obtenons un getTextSize
son retour d'une valeur beaucoup plus élevée que ce que nous avons choisi plus tôt.
Voici ce que nous faisons:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Quelqu'un a déjà vu ça?
- Vous êtes l'obtention et la configuration de la taille du texte sur deux objets différents?
Vous devez vous connecter pour publier un commentaire.
La différence ici est que dans le
setTextSize(int size)
méthode, le type de l'unité par défaut est "sp" ou "échelle de pixels". Cette valeur sera une autre dimension en pixels pour chaque densité de l'écran (ldpi, mdpi, hdpi).getTextSize()
, d'autre part, les rendements réels des dimensions en pixels du texte.Vous pouvez utiliser
setTextSize(int unit, float size)
pour spécifier un type d'unité. Les valeurs de constante de ce qui peut être trouvé dans la TypedValue classe, mais certains d'entre eux sont:ce problème dans les parages parce que le
getTextSize()
méthode retourne la taille en pixels dépendent de la densité de l'écran ! pour obtenir le véritable TextSize utiliser ceci :j'espère qu'il le résoudre 🙂
setTextSize(int unit, float size)
。si le Réglage de changer la taille de police,quelque chose de cause afficher le message d'erreur,vous pouvez faire en tant que:
DIP
?Quand nous essayons de setText() programmitically problème avec getTextSize(), retourne la valeur en px au lieu de sp/dp/dip et nous savons 1sp/dp=1.5 px(taille de l'écran =240).
fonctionne parfaitement pour moi, ou nous pouvons utiliser displaymatrix px:sp/dp ratio puis remplacer cette valeur avec 1,5 f
En bref, si vous voulez agrandir votre textsize
Parce que getTextSize() retour UNIT_PX, alors nous devrions utiliser UNIT_PX
De l'ajout de certains de saveur supplémentaire pour répondre à cette question, comme l'a également couru dans un peu de confusion. Vous devrait être en mesure de déposer ce test en tout
@RunWith(AndroidJUnit4.class)
de test que vous avez dans votre projet (vous devez également ajouter la dimens à votre dimens.xml).Remarque: Tous ces tests passent
Les grands plats à emporter, j'ai trouvé, c'est que
TextView.setTextSize(float)
s'applique à l'échelle de police, donc si vous passez dans une dimen c'est déjà étiqueté de la SP au lieu de DP, puis il recevra la mise à l'échelle police deux fois.Après une longue période a frappé ce et enfin résoudre ce
créer dimen dossier comme ceci res/values/dimensions.xml