文本大小不受字体大小更改的影响



我使用.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时都会使我的应用程序崩溃。那么有什么方法可以让我的应用程序忽略系统字体大小吗?

正如你所说,最简单的方法应该是使用 dp 而不是 sp。

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

编辑:我同意Gabe Sechan的观点,你不应该这样做。相反,请使视图适应各种大小。

例如,不要使 TextView 的高度为 25dp,而是尝试将其设置为环绕内容。

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

你不应该这样做。 如果用户更改全局大小,那是因为他们很难看到东西。 他们有身体残疾,并试图补偿它。 你不应该试图推翻他们的选择。 这不仅是一件生涩的事情,而且意味着他们将很难使用您的应用程序。 这相当于试图阻止盲人在您的应用程序上使用文本到语音,因为您有非常酷的背景音乐。 或者摆脱障碍坡道,因为你有漂亮的楼梯。

要么修复布局,使其在任何大小下看起来都不错,要么让用户决定应用是否看起来太糟糕并减小他的大小。 不要覆盖它。

最新更新