L'appel TextView.setTextSize()
fonctionne anormalement. Juste après l'appel à setTextSize
si nous obtenons un getTextSize
son, il renvoie une valeur beaucoup plus élevée que celle que nous lui avons définie 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-t-il déjà vu cela avant?
Réponses:
La différence ici est que dans la
setTextSize(int size)
méthode, le type d'unité par défaut est "sp" ou "pixels mis à l'échelle". Cette valeur sera une dimension de pixel différente pour chaque densité d'écran (ldpi, mdpi, hdpi).getTextSize()
, d'autre part, renvoie les dimensions réelles en pixels du texte.Vous pouvez utiliser
setTextSize(int unit, float size)
pour spécifier un type d'unité. Les valeurs constantes pour cela peuvent être trouvées dans la classe TypedValue, mais certaines d'entre elles sont:la source
ce problème est survenu car la
getTextSize()
méthode renvoie la taille en pixels dépend de la densité de l'écran! pour obtenir la taille réelle du texte, utilisez ceci:j'espère que ça résoudra :)
la source
setTextSize(int unit, float size)
。si le réglage change la taille de la police , quelque chose cause une erreur d'affichage , vous pouvez faire comme :
la source
DIP
?Lorsque nous essayons de régler un problème par programme avec getTextSize (), renvoie la valeur en px au lieu de sp / dp / dip et nous savons 1sp / dp = 1.5px (taille de l'écran = 240).
fonctionne parfaitement pour moi ou nous pouvons utiliser le rapport displaymatrix en px: sp / dp puis remplacer cette valeur par 1,5f
la source
Après avoir longtemps frappé cela et finalement résolu comme ça
créer un dossier dimen comme celui-ci res / values / dimensions.xml
la source
En bref, si vous souhaitez réduire la taille de votre texte
Parce que getTextSize () retourne UNIT_PX, alors nous devrions utiliser UNIT_PX
la source
Solution Kotlin
Pour définir à l'aide d'une ressource, utilisez simplement ceci:
Pour faire de même avec une valeur de ressource, ajoutez cette propriété d'extension pour définir beaucoup plus facilement la taille de votre texte
la source
Ajouter une saveur supplémentaire à cette réponse, car cela a également entraîné un peu de confusion. Vous devriez pouvoir déposer ce test dans n'importe quel
@RunWith(AndroidJUnit4.class)
test que vous avez dans votre projet (vous devrez également ajouter les dimens à votre dimens.xml).Remarque: tous ces tests réussissent
Le gros avantage que j'ai trouvé est que l'
TextView.setTextSize(float)
application de la mise à l'échelle de la police , donc si vous passez dans une dimension qui est déjà étiquetée SP au lieu de DP, elle recevra la mise à l'échelle de la police deux fois .la source