Taille de la police de TextView Android de l'application des modifications sur le changement de taille de police à partir des paramètres
Je tiens à préciser ma propre taille du texte dans ma demande, mais j'ai un problème à faire cela.
Lorsque je change la taille de police dans les paramètres de l'appareil, la taille de la police de ma demande TextView
également des changements.
- c'est le comportement par défaut que si vous modifiez la taille de police de votre appareil natif de police elle a également pour effet de votre application taille de la police.
- vous pouvez trouver la réponse ici stackoverflow.com/questions/16706076/...
- L'utilisation de la sp pour la taille du texte...parce que, mais il est mis à l'échelle par l'utilisateur de la taille de la police de préférence. L'utilisation de dp pour tout le reste.
Vous devez vous connecter pour publier un commentaire.
En fait, les Paramètres de taille de police affecte uniquement les tailles dans
sp
. Donc tout ce que Vous devez faire - définirtextSize
dansdp
au lieu desp
", puis " paramètres de ne pas modifier la taille du texte dans Votre application.Voici un lien vers la documentation: Dimensions
Cependant veuillez noter que le comportement attendu est que les polices de caractères dans toutes les applications de respecter les préférences de l'utilisateur. Il existe de nombreuses raisons pour qu'un utilisateur puisse ajuster la taille de la police et certains d'entre eux pourraient même être médical - les utilisateurs malvoyants. À l'aide de
dp
au lieu desp
pour le texte pourrait conduire à contrecoeur à la discrimination contre certains de votre application utilisateurs.je.e:
sp
et quand je dois utiliserdp
. J'ai eu une très bonne réponse ici: stackoverflow.com/questions/11638691/...La plus simple de le faire est de simplement utiliser quelque chose comme ce qui suit:
Si vous souhaitez en savoir plus sur la
textSize
de la propriété, vous pouvez vérifier la Développeur Android documentation.Utiliser le
dimension
type de ressources comme vous utilisezstring
ressources (DOCS).Dans votre
dimens.xml
fichier, déclarer votre dimension variables:Vous pouvez ensuite utiliser ces valeurs comme ceci:
Vous pouvez déclarer les différents
dimens.xml
fichiers pour les différents types d'écrans.Ceci vous permettra de garantir le look désiré de votre application sur différents appareils.
Lorsque vous ne spécifiez pas de
android:textSize
le système utilise les valeurs par défaut.Notez également que si la textSize est définie dans le code, l'appel de
textView.setTextSize(X)
interprète le nombre (X) en tant que SP. UtilisationsetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
pour définir des valeurs dans dp.Ce n'est pas une bonne chose d'avoir à spécifier de trempage ou de SP de nouveau par le code quand déjà défini dans un dimen.xml fichier.
Je pense que la meilleure option est d'utiliser PX lors de l'utilisation d'un dimen.xml valeur :
De cette façon, vous pouvez passer de la DP à la SP si nécessaire dimen.xml fichier sans avoir à modifier le code.
moyen simple de prévenir l'ensemble de l'application de s'effectuera par le système de la taille de la police est à updateConfiguration à l'aide d'une base de l'activité.
À l'aide de la taille de police dans DPs au lieu de SPs dans
textSize
résout ce.cela peut aider. ajoutez le code dans votre Application personnalisée ou BaseActivity
toutefois, la Ressource#updateConfiguration est deplicated de l'API de niveau 25, ce qui signifie qu'il sera pas pris en charge quelques jours dans le futur.
Vous avez à écrire en TextView Balises XML :
Si les unités utilisées sont des SP, pas de DP, et vous voulez remplacer le système de mise à l'échelle police, tout ce que vous faire est de remplacer une méthode dans l'activité - voir ce post.
ressources.updateConfiguration est obsolète et buggy (sur Oreo j'ai eu des problèmes de texte mis en forme).
Vous pouvez utiliser ce code:
de résoudre votre problème, mais vous devez savoir que vous devez respecter utilisateur décisions.
par la présente, modifier la taille du texte à partir des paramètres de l'appareil ne sera pas modifier cette valeur. c'est pourquoi vous devez utiliser sp au lieu de dp.
Donc, ma suggestion est de revoir votre application avec les différents système de taille(petit,normal,grand,...)
Remplacer
getResources()
en Activité.Ensemble TextView la taille de sp comme d'habitude comme
android:textSize="32sp"