Почему только «.sp» в fontSize of Text(«») составляется, а не «.dp» в Jetpack Compose-beta08

Я хочу, чтобы размер текста был в .dpчтобы он не менялся в соответствии с системным шрифтом. Как добиться этого в Jetpack Compose "Text" composable

3 ответа

Решение

Команда Compose не намерена предоставлять такую ​​возможность, em - это немного лаваш в использовании, но есть простой обходной путь, если кому-то это действительно нужно.

      @Composable
fun dpToSp(dp: Dp) = with(LocalDensity.current) { dp.toSp() }

Text("ABCD", fontSize = dpToSp(15.dp))

Взято из того же трекера проблем: https://issuetracker.google.com/190644747 .

Вы можете использовать свойства расширения :

      private fun Int.textDp(density: Density): TextUnit = with(density) {
    this@textDp.dp.toSp()
}


val Int.textDp: TextUnit
    @Composable get() =  this.textDp(density = LocalDensity.current)

С использованием em сделал мой размер шрифта согласованным, независимо от размера шрифта системы

Например. Text("ABCD", fontSize = 10.em)

Другие вопросы по тегам