2011-07-22 43 views
3

我想让用户选择字体大小。如何在我自己的android应用程序中设置字体比例?

备件确实提供的功能来做到这一点,

ActivityManagerNative.getDefault()。updateConfiguration(新字体大小规模配置)

但这是整个所有的Android应用程序。我想将其添加到我的应用程序的首选项中,并且仅影响我的应用程序。

我尝试了下面的方法,它有时会起作用,但是第一次启动我的应用程序时,字体大小依然为1.0。我不知道为什么。我在每个onCreate的活动中添加了以下代码。

Configuration config = resources.getConfiguration(); config.fontScale = 1.5F; resources.updateConfiguration(config,mDisplayMetrics);

我该怎么办?

+0

你找到了这个答案吗?我目前遇到同样的问题... – dineth

+0

请参阅Activity.getResources()。setConfiguration()(或类似的东西) – njzk2

回答

0

我想你在找什么是一个主题应用到您的活动或查看

请看看android的文档Themes

12

下面的代码将允许更改应用程序只字体比例。 第二行代码“configuration.fontScale =(float)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); 

希望这有助于与前一步0.15缩放,其默认的1

地方吧!

+0

不要在您的Application类的OnConfigurationChanged中使用它;一些设备我似乎吓坏了,在旋转时无法控制地闪烁。把它放在你的super.onCreate后似乎工作得很好,而OnConfigurationChanged会再次调用你的onCreate,所以如果用户决定在你的应用程序中间改变字体的话你就会被设置。 – welshk91

相关问题