我使用.setTextSize()
根据屏幕分辨率更改文本的大小。问题是用户将设置中的字体大小更改为>normal
时,我的UI看起来很糟糕。
在这种情况下使用的单位是sp
,但是可以用代码将其更改为dp
吗?更改字体大小不会受到影响,对吧?
我知道我可以使用float f = getResources().getConfiguration().fontScale;
来获取系统字体大小,然后根据屏幕分辨率和字体大小使用if-else
到.setTextSize()
,但是我也发现了这一点代码
Configuration mConfiguration = new Configuration();
mConfiguration.fontScale = 1;
getResources().getConfiguration().setTo(mConfiguration);
这应该使我的应用忽略系统字体大小,但对我而言不起作用。不仅不起作用,而且每次我启动Alert Dialog
时,它都会使我的应用程序崩溃。那有什么办法可以让我的应用忽略系统字体大小?
答案 0 :(得分:1)
最简单的方法应该是使用dp代替sp,如您所说。
需要注意的是,如果他们改变屏幕缩放比例,那将改变dp的缩放比例,就像更改字体大小会改变sp的缩放比例一样。
编辑:我同意Gabe Sechan,您永远都不要这样做。而是使您的视图适应各种大小。
例如,不要将TextView的高度设置为25dp,而应将其包装内容。
例外情况是,如果您的公司将图标作为字体文件提供给您,而您已经有大图标了。信不信由你,一些设计师将图标作为.ttf文件提供。
答案 1 :(得分:0)
您不应这样做。如果用户更改了全局大小,则是因为他们很难看东西。他们有身体上的残疾,并正在努力弥补。您不应尝试覆盖他们的选择。这不仅是一件古怪的事情,而且还意味着他们根本很难使用您的应用程序。这等效于尝试阻止盲人在您的应用上使用文本进行语音转换,因为您的背景音乐非常酷。或者因为有漂亮的楼梯而摆脱障碍通道。
要么调整布局,使其在任何尺寸下都看起来不错,要么让用户确定应用程序看起来是否太差并减小其尺寸。不要覆盖它。