如何防止系统字体大小更改对安卓应用程序特定部分产生影响?

3

有一个系统范围内的“字体大小”设置,允许调整文本大小。

通常它能够正常工作,但有些情况下,特定部分的视图应该忽略此设置,字体大小应该保持不变。

我知道如何防止系统字体大小更改影响 Android 应用程序(请参见此处)。

但是在现在(Android 10)这个使用 dp 的被接受答案已经失效了(请参见此处)。

此处 删除整个活动中的缩放,此处 删除整个应用程序中的缩放。

以下是受影响的代码,已经尝试过使用 dp 但失败了:

            <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:id="@+id/compassNorth"
            android:layout_alignParentTop="true"
            android:text="@string/compass_north_one_letter"
            android:textColor="#000"
            android:textSize="10dp"/>

N(compass_north_one_letter)无论如何都在改变大小:

输入图像描述


2
但是使用dp的被接受答案现在(Android 10)已经不起作用了。截图会有所帮助。 - CommonsWare
2
“也许如果我在某种情况下出现了文字大小变化的幻觉,这会有所帮助?”--不是的,但我需要看到你所看到的。我将你的“TextView”放入一个废弃项目中,在运行Android 10的Pixel 4上运行它,我没有看到你所看到的效果。我将字体比例尺提高到最大,N的大小与正常字体比例尺下一样,即使终止进程后也是如此。因此,请创建一个废弃项目,将您的“TextView”放入其中,并尝试在您用于那些截图的设备上运行它。如果问题存在,则可能是硬件差异。 - CommonsWare
你可以在TextView中使用自定义字体,这样它就不会受到任何更改的影响。可能的解决方案:https://dev59.com/Wl4c5IYBdhLWcg3wvsbB#27588966 - JexSrs
@GeorgeAndredakis 你确定只有Roboto被缩放了,而其他所有字体都保持不变吗? - reducing activity
在我的应用中,使用 API 级别 25 完美运行。 - JexSrs
显示剩余2条评论
2个回答

4
尝试使用autoSizeTextType,使文字大小根据可用视图大小自动缩放。 https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview 它允许您指定最大尺寸、预设尺寸,这样您就能更好地控制。我不了解您的整个布局,因此无法实际测试,但是从您的片段中可以看出。
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:id="@+id/compassNorth"
            android:layout_alignParentTop="true"
            android:text="@string/compass_north_one_letter"
            android:textColor="#000"
            app:autoSizeTextType="uniform"
        />

此外,我认为你需要指定layout_height的具体大小来限制视图大小以进行自动调整。 如果无法正常工作,请尝试使用app:autoSizeMaxTextSize或者精细地进行调整。

-1
在你的情况下,我建议使用图像(不太优雅的解决方案),因为它非常直接地实现了你想要做的事情。如果需要深入了解,甚至可以即时创建图像。

1
他为什么要牺牲本地化、扩展性、渲染等等,只是为了“这个案例”?唯一建议这样做的原因是你绝对有信心知道发生了什么,并且没有其他解决方法。我怀疑在这种情况下是否如此,即使是这样,我宁愿让OP正确处理字体缩放(以适应无障碍性),而不是用PNG文件使他/她的应用程序变得臃肿... - Martin Marconcini
@MartinMarconcini 显然这是一个显示方向的按钮,所以我怀疑这将是一个简单而不太好的解决方案,正如我所说。如果您使用一个额外的可绘制对象,它不会使应用程序“膨胀”。但这只是一个建议,不是最好的想法,而是针对这种特定情况的快速修复。 - Vendetta8247
即使是一个不好的解决方案,至少它也是一个解决方案。我希望有更好的选择,但是... - reducing activity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接