防止系统字体缩放 - Jetpack Compose

Prevent system font scaling - Jetpack Compose

我正在尝试限制应用程序免受系统字体缩放的影响。我经历了很多解决方案,但 none 帮助了我。他们中的大多数人告诉我们使用 dp 而不是 dp 来表示文本大小,但是在 compose 中,如果我是正确的,我们只能使用 sp,因为它需要一个文本单元。 在我们使用 jetpack compose 完成的应用程序中,是否有任何正确的方法来限制字体缩放?请帮忙。

(参考解决方案):https://l.workplace.com/l.php?u=https%3A%2F%2Fwhosebug.com%2Fquestions%2F21546805%2Fhow-to-prevent-system-font-size-changing-effects-to-android-application&h=AT0zIuBPbUONm0T6q8PtqbxCdX6P_ywlp-yFGrqPMqZt7H3wsWYltKO5XwbW3i0lenrxxLi3nn_kMO4aPtFUfig2iG0BcRZpd0wTuZ1_XFpdsjDM6E7RPyZ-G_c2dlmuzGqsSEHYbqBJun0hLLZgOpRUszKbe9-1xQ

直到jetpack compose for Text()没有解决方案,你可以使用AndroidView:

@Composable
fun CustomText(
// attributes you need to set
){

     AndroidView(factory = { context ->
                    AppCompatTextView(context).apply {
                        setTextSize(TypedValue.COMPLEX_UNIT_DIP, 25)
                        setText("")
                        // other attributes you want to set or other features which is not available in jetpack compose now.
                    }
                },)

}

您可以像这样为 IntFloat 添加扩展名

@Composable
fun Int.scaledSp(): TextUnit {
    val value: Int = this
    return with(LocalDensity.current) {
        val fontScale = this.fontScale
        val textSize =  value / fontScale
        textSize.sp
  }