【问题标题】:How to prevent system font-size changing effects to a specific part of an Android application?如何防止系统字体大小更改对 Android 应用程序特定部分的影响?
【发布时间】:2020-06-15 20:06:15
【问题描述】:

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

它通常运行良好,但在某些情况下会发生特殊情况,视图的特定部分应忽略此设置,字体大小应保持不变。

我知道how to prevent system font-size changing effects to android application?

dp 接受的答案现在(Android 10)不起作用(https://stackoverflow.com/a/21546897/4130619

https://stackoverflow.com/a/57225687/4130619 移除整个活动的缩放,https://stackoverflow.com/a/39346113/4130619 移除整个应用的缩放。

受影响的代码,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) 正在改变大小:

【问题讨论】:

  • “但是现在接受的 dp 答案(Android 10)不起作用”——截图会有所帮助。
  • @CommonsWare 我不确定屏幕截图会有什么帮助 - 文本正在改变大小,而我想阻止它。如果我以某种方式幻觉文本大小的变化,也许会有所帮助?反正我会加的。
  • 有趣(在 Android 8.1 上这不会发生)。您是否使用过布局检查器来查看 TextView 真正呈现的内容?
  • “如果我以某种方式幻觉文本大小的变化,也许会有所帮助?” ——不,但我需要看看你在看什么。我拿了你的TextView,把它放在一个废品项目中,在运行 Android 10 的 Pixel 4 上运行它,但我没有得到你所看到的效果。我将字体比例提升到最大,N 的大小与字体比例正常时的大小相同,即使在终止该过程之后也是如此。因此,创建一个废品项目,将您的 TextView 放入其中,然后尝试在您用于这些屏幕截图的设备上运行它。如果问题存在,则可能是硬件差异。
  • 您可以在 textview 中使用自定义字体,这样它就不会受到任何更改的影响。可能的解决方案stackoverflow.com/a/27588966/9044222

标签: android text scaling autoscaling


【解决方案1】:

试试autoSizeTextType,它可以让文本大小根据可用视图大小自动缩放。 https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

它允许您指定最大尺寸、预设尺寸,以便您有更多的控制权。 我不知道您的整个布局,因此无法实际测试,但可以通过您的 sn-p 进行测试,例如,

        <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,或者也可以进行粒度调整。

【讨论】:

    【解决方案2】:

    在您的情况下,我建议您使用图像(肮脏的解决方案),因为您尝试做的事情非常简单。您甚至可以在旅途中创建图像,但前提是您需要深入研究。

    【讨论】:

    • 他为什么要“为了这种情况”牺牲本地化、缩放、渲染等?建议这样做的唯一原因是,如果您绝对有信心知道发生了什么,并且没有其他方法可以解决。我怀疑这里的情况,即使是这样,我宁愿让 OP 正确处理字体缩放(以适应可访问性)而不是用 PNG 让他/她的应用程序膨胀......
    • @MartinMarconcini 这显然是一个显示方向的按钮,所以是的,我怀疑这将是一个简单的肮脏解决方案,正如我所说的那样。如果您使用一个额外的可绘制对象,它不会“膨胀”应用程序。但这只是一个建议,并不是最好的主意,而是可以快速解决这种特定情况的方法
    • 尽管如此,即使是糟糕的解决方案,至少它是一个解决方案。我希望有更好的东西,但是......
    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多