【问题标题】:How to let app layout not changed by Display size and font size by Android system setting?如何让Android系统设置的显示大小和字体大小不改变应用布局?
【发布时间】:2021-11-16 10:41:19
【问题描述】:

如何修复应用默认显示大小和字体大小,防止用户更改系统设置导致应用布局变形?

【问题讨论】:

  • 您为什么要忽略用户设置,让那些难以清晰观察或难以触摸小目标的人无法访问该应用?

标签: android kotlin android-layout font-size display


【解决方案1】:

如果您使用 dp(如 20dp)而不是 sp(如 20sp),则文本不会根据用户选择的字体大小进行缩放。 这将为您简化 UI 设计,但用户将字体变大是有原因的:他们看不到较小的字体。所以如果你选择忽略用户的设置,用户可能会选择忽略你的应用。

【讨论】:

  • 我将 sp 用于我的应用程序文本视图。我用代码解决了字体大小比例,但无法解决显示大小比例导致裁剪我的布局。当显示尺寸放大时,我的布局将被裁剪。
【解决方案2】:

确保您在布局 XML 文件的 textSize 属性中使用了 sp。 sp单元中的文字大小可以根据android系统设置自行调整。

例如-

..
android:textSize="14sp"
..

另外,您可以查看此参考资料-https://stackoverflow.com/a/2025541/10632119

Android Studio ic- "com.intuit.sdp:sdp-android", Dimenify 有一些插件和库可用,它会根据屏幕密度为我们的项目生成多个dimems.xml文件。

【讨论】:

  • 当显示尺寸放大时,我的布局将被裁剪。
【解决方案3】:

以下是你必须做的事情,

  1. 使用带有适当尺寸值的 textSize 的 SP,(或使用 SDP 库)
  2. 将聊天框图像用作可缩放的矢量图像。

【讨论】:

  • 当显示尺寸放大时,我的布局将被裁剪。
  • 你能发布裁剪后的布局截图吗?布局的高度和宽度是多少,您是否提供了硬编码?如果你能发布你的 layout/xml 文件那就太好了,这样我就可以更精确了。
  • 我现在添加了模拟器照片和xml照片。
  • 好的,我建议在视图组顶部添加嵌套滚动视图。由于您的屏幕包含文本数据的动态大小,因此需要垂直滚动。
【解决方案4】:

使用实现com.intuit.sdp:sdp-android:1.0.6。它会根据屏幕大小调整大小。

【讨论】:

  • 我尝试添加此实现,但对我原来的问题没有任何改变。
【解决方案5】:

虽然下面的代码可以防止字体大小缩放(使用一些不推荐使用的方法),但不能阻止显示大小缩放。

override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)

            adjustFontScale(resources.configuration)
}

private fun adjustFontScale(configuration: Configuration?) {
        configuration?.let {
            it.fontScale = 1.0F
            val metrics: DisplayMetrics = resources.displayMetrics
            val wm: WindowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
            wm.defaultDisplay.getMetrics(metrics)
            metrics.scaledDensity = configuration.fontScale * metrics.density

            baseContext.applicationContext.createConfigurationContext(it)
            baseContext.resources.displayMetrics.setTo(metrics)

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 2014-03-06
    • 1970-01-01
    • 2015-09-11
    • 2011-12-01
    • 2013-08-02
    • 2012-01-12
    • 2015-08-10
    相关资源
    最近更新 更多