Android TextView setTextSize augmente incorrectement la taille du texte [dupliquer]
cette question a déjà une réponse ici:
c'est une extension de TextView. getTextSize()
et setTextSize()
ne sont pas dépassés, je le fais ne pas étendre ces méthodes. Programmation en 1.6, niveau 4 de L'API.
la boucle de ce code fait que la taille est multipliée par 1,5 chaque fois qu'elle est itérée, par exemple si la taille Lit initialement 200 de getTextSize
, alors setTextSize(size)
est appelé, getTextSize
appelé à nouveau lit 300.
public void shrinkTest() {
float size = this.getTextSize();
while (size > 8) {
this.setTextSize(size);
size = this.getTextSize();
}
}
pourquoi?
3 réponses
problème d'unités mixtes. Semble un peu contre-intuitif, mais c'est une solution facile. La méthode par défaut setTextSize(float)
suppose que vous saisissez sp
unités (pixels gradués), tandis que la méthode getTextSize()
renvoie une taille de pixel exacte.
vous pouvez corriger cela en utilisant l'alternative setTextSize(TypedValue, float)
, comme suit:
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
cela vous permettra de travailler avec les mêmes unités.
setTextSize()
et getTextSize()
fonctionnent avec des unités différentes. Le paramètre à définir () est indépendant de la densité, "scaled pixels", alors que get () renvoie simplement les vieux pixels.
passer des unités de taille en utilisant la valeur typée comme ci-dessous:
TypedValue.COMPLEX_UNIT_PX / / Pixels
TypedValue.COMPLEX_UNIT_SP / / Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP / / Device Independent Pixels
setTextSize (TypedValue.COMPLEX_UNIT_SP, 18)