7
votes

Comment définir l'échelle de la police dans ma propre application Android?

Je veux permettre à l'utilisateur de sélectionner la taille de la police.

Les pièces de rechange fournissent la fonctionnalité de faire cela,

ActivityManagernative.getDefault (). UpdateConfiguration (nouvelle taille de taille de la police config)

mais c'est pour toutes les applications Android. Je veux l'ajouter dans la préférence de ma demande et que l'impact de mon application.

J'ai essayé des méthodes ci-dessous, cela fonctionne parfois, mais la première fois que je démarre mon application, la taille de la police toujours avec l'échelle de 1,0. Je ne fais pas pourquoi. J'ai ajouté ci-dessous le code dans chaque ONCreate de mes activités.

configuration configuration = ressources.getconfiguration (); config.fontcale = 1.5f; ressources.updateConfiguration (configuration, mdisplaymetrics);

Que puis-je faire?


3 commentaires

Avez-vous trouvé une réponse pour cela? J'ai le même problème pour le moment ...


Voir Activity.GetResources (). SetConfiguration () (ou quelque chose comme ça)


Stackoverflow.com/Questtions/21546805/... - c'est la manière dont vous mettez à jour la configuration et obtenez la nervure de la balance de police pour votre application


3 Réponses :


0
votes

Je pense que ce que vous cherchez, c'est d'appliquer un thème à votre activité ou de visualiser

Veuillez jeter un oeil à l'Android Docs thèmes


0 commentaires

17
votes

Le code ci-dessous permettra de modifier l'application uniquement de l'échelle de la police. Sur la deuxième ligne, le code "configuration.fontcale = (flotteur) 1;" devra chabger pour répondre à vos besoins. Les valeurs par défaut sont à l'échelle avec l'étape 0.15, ayant par défaut 1.

Placez-la avant d'appeler SetContentView (R.Layout.Yourlayout) P>

Configuration configuration = getResources().getConfiguration();
configuration.fontScale=(float) 1; //0.85 small size, 1 normal size, 1,15 big etc

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);


2 commentaires

N'utilisez pas cela dans votre classe d'applications surConfigurationChanged; Certains des dispositifs que j'ai semblent paniquer et clignoter de manière incontrôlable lors de la rotation. En l'appuyant après que votre Super.Oncreate semble fonctionner bien et que lesconfigajustionsVangues appelleront votre ONCreate de toute façon, donc vous êtes défini si un utilisateur décide de modifier la police au milieu de votre application.


Ne travaillez pas pour Android 10 et certains Android 9 ... mais fonctionne pour Android avec des versions inférieures



1
votes

traduit pour xamarin .... xxx


0 commentaires