文字大小不受字体大小变化的影响

时间:2018-10-03 18:02:19

标签: android font-size text-size

我使用.setTextSize()根据屏幕分辨率更改文本的大小。问题是用户将设置中的字体大小更改为>normal时,我的UI看起来很糟糕。

  1. 在这种情况下使用的单位是sp,但是可以用代码将其更改为dp吗?更改字体大小不会受到影响,对吧?

  2. 我知道我可以使用float f = getResources().getConfiguration().fontScale;来获取系统字体大小,然后根据屏幕分辨率和字体大小使用if-else.setTextSize(),但是我也发现了这一点代码

Configuration mConfiguration = new Configuration(); mConfiguration.fontScale = 1; getResources().getConfiguration().setTo(mConfiguration);

这应该使我的应用忽略系统字体大小,但对我而言不起作用。不仅不起作用,而且每次我启动Alert Dialog时,它都会使我的应用程序崩溃。那有什么办法可以让我的应用忽略系统字体大小?

2 个答案:

答案 0 :(得分:1)

最简单的方法应该是使用dp代替sp,如您所说。

需要注意的是,如果他们改变屏幕缩放比例,那将改变dp的缩放比例,就像更改字体大小会改变sp的缩放比例一样。

编辑:我同意Gabe Sechan,您永远都不要这样做。而是使您的视图适应各种大小。

例如,不要将TextView的高度设置为25dp,而应将其包装内容。

例外情况是,如果您的公司将图标作为字体文件提供给您,而您已经有大图标了。信不信由你,一些设计师将图标作为.ttf文件提供。

答案 1 :(得分:0)

您不应这样做。如果用户更改了全局大小,则是因为他们很难看东西。他们有身体上的残疾,并正在努力弥补。您不应尝试覆盖他们的选择。这不仅是一件古怪的事情,而且还意味着他们根本很难使用您的应用程序。这等效于尝试阻止盲人在您的应用上使用文本进行语音转换,因为您的背景音乐非常酷。或者因为有漂亮的楼梯而摆脱障碍通道。

要么调整布局,使其在任何尺寸下都看起来不错,要么让用户确定应用程序看起来是否太差并减小其尺寸。不要覆盖它。