簡體   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