繁体   English   中英

如何在 kotlin 中检测用户设置的屏幕缩放级别

[英]How do I detect the user-set screen zoom level in kotlin

我试图在 Kotlin 中找到一种方法来检测用户在其设备上设置的显示缩放级别。 我目前有两个带有标签的图像按钮,在 LinearLayout 中并排放置在一侧。 如果显示缩放设置超过某个阈值,则标签会换行。 我想做的是检测缩放级别(或其他任何名称)并在文本超过一定大小时垂直堆叠它们,以便视力不太理想的用户可以正确阅读它们。 这在 Kotlin 中是否可行?

DisplayMetrics.DENSITY_DEVICE_STABLE专门为此目的而存在。 将其与您当前的密度 Dpi 进行比较。

我建议您使用FlexboxLayout来完成您想要在这里实现的目标。

但是,如果您坚持使用 LinearLayout 并根据天气反转它的方向,您的文本是否适合那里,您可以使用BoringLayout帮助您计算绘制特定文本所需的宽度,例如以下代码告诉SomeText需要多少空间使用textSize=20 SP的颜料绘制。 因此,根据此值,您可以决定如何设置 LinearLayout 的方向

val paint = TextPaint().apply {
            textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20f, context.resources.displayMetrics)
        }
BoringLayout.getDesiredWidth("SomeText", paint)

我能够在configuration命名空间中找到我需要的值。 有两个影响布局的用户设置,字体比例和显示缩放,两者都可以相互独立设置。

val config = resources.configuration
val fontScale = config.fontScale
val screenWidth = config.screenWidthDp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM