我使用.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
时都会使我的应用程序崩溃。那么有什么方法可以让我的应用程序忽略系统字体大小吗?
正如你所说,最简单的方法应该是使用 dp 而不是 sp。
需要注意的是,如果他们更改屏幕缩放,这将改变 dp 含义的比例,就像更改字体大小会更改 sp 含义的比例一样。
编辑:我同意Gabe Sechan的观点,你不应该这样做。相反,请使视图适应各种大小。
例如,不要使 TextView 的高度为 25dp,而是尝试将其设置为环绕内容。
例外情况是,如果您的公司将图标作为字体文件提供,并且您已经拥有大图标。信不信由你,一些设计师将图标作为.ttf文件提供。
你不应该这样做。 如果用户更改全局大小,那是因为他们很难看到东西。 他们有身体残疾,并试图补偿它。 你不应该试图推翻他们的选择。 这不仅是一件生涩的事情,而且意味着他们将很难使用您的应用程序。 这相当于试图阻止盲人在您的应用程序上使用文本到语音,因为您有非常酷的背景音乐。 或者摆脱障碍坡道,因为你有漂亮的楼梯。
要么修复布局,使其在任何大小下看起来都不错,要么让用户决定应用是否看起来太糟糕并减小他的大小。 不要覆盖它。