Предотвратить масштабирование системного шрифта - Jetpack Compose
Я пытаюсь ограничить приложение от масштабирования системного шрифта. Я прошел через множество решений, но ни одно не помогло. Большинство из них говорят использовать dp вместо dp для размеров текста, но в compose мы можем использовать только sp, если я прав, поскольку он ожидает текстовый блок. Есть ли правильный способ ограничить масштабирование шрифта в нашем приложении, сделанном с помощью jetpack compose? Пожалуйста помоги .
3 ответа
У вас может быть расширение для
Int
или же
Float
как это
@Composable
fun Int.scaledSp(): TextUnit {
val value: Int = this
return with(LocalDensity.current) {
val fontScale = this.fontScale
val textSize = value / fontScale
textSize.sp
}
override fun attachBaseContext(newBase: Context?) {
val newOverride = Configuration(newBase?.resources?.configuration)
if (newOverride.fontScale >= 1.1f)
newOverride.fontScale = 1.1f
applyOverrideConfiguration(newOverride)
super.attachBaseContext(newBase)
}
Вы можете использовать что-то подобное в своей основной деятельности.
Пока нет решения по сочинению джетпака для
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.
}
},)
}