【问题标题】:How to set font scale in my own android application? [duplicate]如何在我自己的 android 应用程序中设置字体比例? [复制]
【发布时间】:2011-07-22 06:29:32
【问题描述】:

我想允许用户选择字体大小。

备件确实提供了这样做的功能,

ActivityManagerNative.getDefault().updateConfiguration(新字体大小比例配置)

但这适用于所有安卓应用程序。我想将它添加到我的应用程序的首选项中,并且只影响我的应用程序。

我尝试了以下方法,有时它确实有效,但是当我第一次启动我的应用程序时,字体大小仍然是 1.0 比例。我不知道为什么。我在活动的每个 onCreate 中都添加了以下代码。

配置配置 = resources.getConfiguration(); config.fontScale=1.5f; resources.updateConfiguration(config, mDisplayMetrics);

我能做什么?

【问题讨论】:

  • 你找到答案了吗?我现在也遇到了同样的问题...
  • 见 Activity.getResources().setConfiguration() (或类似的东西)
  • stackoverflow.com/questions/21546805/… - 这就是您更新配置并为您的应用覆盖字体比例的方式

标签: android fonts size scale


【解决方案1】:

下面的代码将只允许更改应用程序的字体比例。 在第二行,代码“configuration.fontScale=(float) 1;”将不得不 chabge 以满足您的需求。默认以 0.15 步长缩放,默认为 1。

在调用 setContentView(R.layout.yourlayout) 之前放置它

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);

希望这会有所帮助!

【讨论】:

  • 不要在 Application 类的 OnConfigurationChanged 中使用它;我使用的一些设备在旋转时似乎会发疯并无法控制地闪烁。把它放在你的 super.onCreate 之后似乎效果很好,而且 OnConfigurationChanged 无论如何都会再次调用你的 onCreate,所以如果用户决定在你的应用程序中间更改字体,你就已经设置好了。
  • 不适用于 android 10 和某些 android 9... 但适用于较低版本的 android
【解决方案2】:

翻译为 Xamarin....

        Android.Content.Res.Configuration configuration = Resources.Configuration;
        configuration.FontScale = (float)1; //0.85 small size, 1 normal size, 1,15 big etc

        Android.Util.DisplayMetrics metrics = new DisplayMetrics();
        this.WindowManager.DefaultDisplay.GetMetrics(metrics);
        metrics.ScaledDensity = configuration.FontScale * metrics.Density;

【讨论】:

    【解决方案3】:

    我认为您正在寻找的是将主题应用于您的活动或视图

    请查看安卓文档Themes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 2011-05-12
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      相关资源
      最近更新 更多