Je souhaite spécifier ma propre taille de texte dans mon application, mais j'ai un problème à le faire.
Lorsque je change la taille de la police dans les paramètres de l'appareil, la taille de la police de mon application TextView
change également.
android
android-layout
textview
android-fonts
Vikasdeep Singh
la source
la source
Réponses:
En fait, la taille de la police Paramètres affecte uniquement les tailles dans
sp
. Donc, tout ce que vous devez faire - définirtextSize
dansdp
au lieu desp
, les paramètres ne changeront pas 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 toutes les applications respectent les préférences de l'utilisateur. Il existe de nombreuses raisons pour lesquelles un utilisateur peut souhaiter ajuster les tailles de police et certaines d'entre elles peuvent même être des utilisateurs malvoyants. L'utilisation
dp
au lieu desp
pour le texte peut conduire à une discrimination involontaire à l'encontre de certains utilisateurs de votre application.c'est à dire:
la source
sp
et quand je devais l'utiliserdp
. J'ai eu une très bonne réponse ici: stackoverflow.com/questions/11638691/...Le plus simple à faire est simplement d'utiliser quelque chose comme ce qui suit:
Si vous souhaitez en savoir plus sur la
textSize
propriété, vous pouvez consulter la documentation du développeur Android .la source
Utilisez le
dimension
type de ressources comme vous utilisez lesstring
ressources ( DOCS ).Dans votre
dimens.xml
fichier, déclarez vos variables de dimension:Ensuite, vous pouvez utiliser ces valeurs comme ceci:
Vous pouvez déclarer différents
dimens.xml
fichiers pour différents types d'écrans. Cela garantira l'apparence souhaitée de votre application sur différents appareils.Lorsque vous ne spécifiez pas,
android:textSize
le système utilise les valeurs par défaut.la source
Notez également que si textSize est défini dans le code, l'appel
textView.setTextSize(X)
interprète le nombre (X) comme SP. UtilisezsetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
pour définir les valeurs dans dp .la source
Ce n'est pas une bonne chose d'avoir à spécifier à nouveau DIP ou SP par code lorsqu'il est déjà défini dans un fichier dimen.xml.
Je pense que la meilleure option est d'utiliser PX lors de l'utilisation d'une valeur dimen.xml:
De cette façon, vous pouvez passer de DP à SP si nécessaire dans le fichier dimen.xml sans avoir à changer de code.
la source
Un moyen simple d'empêcher toute l'application d'être affectée par la taille de la police du système consiste à mettre à jour la configuration à l'aide d'une activité de base.
la source
cela peut aider. ajoutez le code dans votre application personnalisée ou BaseActivity
cependant, Resource # updateConfiguration est déplié au niveau de l'API 25, ce qui signifie qu'il ne sera plus pris en charge un jour dans le futur.
la source
Vous pouvez utiliser ce code:
cela résout votre problème mais vous devez savoir que vous devez respecter les décisions des utilisateurs. ainsi, la modification de la taille du texte à partir des paramètres de l'appareil ne changera pas cette valeur. c'est pourquoi vous devez utiliser sp au lieu de dp . Ma suggestion est donc de revoir votre application avec différentes tailles de police système (petite, normale, grande, ...)
la source
pour kotlin, ça marche pour moi
la source
changer le DP en sp c'est une bonne pratique pour android android: textSize = "18sp"
la source
Si les unités utilisées sont SP, pas DP, et que vous souhaitez remplacer la mise à l'échelle des polices système, tout ce que vous faites est de remplacer une méthode dans l'activité - voir cet article .
resources.updateConfiguration est obsolète et boguée (sur Oreo, j'ai eu des problèmes avec le texte formaté).
la source
Passer outre
getResources()
dans l'activité.Définissez la taille de TextView dans sp comme d'habitude, comme
android:textSize="32sp"
la source
dans Android 8, cette solution fonctionne pour moi
ajouter ce code dans l'activité de base
source https://stackoverflow.com/a/57225687/7985871
la source