Свойство autoSizeTextType для износа LayoutElementBuilders.Text
В Android Wear TileService мы должны использоватьдля отображения текста. В xml мы можем использоватьautoSizeTextType
для текстового просмотра.
Как я могу применить это свойство вLayoutElementBuilders.Text
для ношенияTileService
?
Я не нашел никакого метода в Builder.
1 ответ
Здесь я делюсь своим решением, чтобы решить мою проблему.
Требование состояло в том, чтобы не изменять размер шрифта, когда пользователь меняет размер шрифта дисплея из настройки.
Для фиксированного размера я должен использовать размер шрифта вdp
вdimen
файл как20dp
.
ВDimensionBuilders.SpProp.Builder
метод классаsetValue
ожидать ценность вsp
.
ВLayoutElementBuilders.FontStyle.Builder
метод классаsetSize
ожидатьSpProp
.
Поэтому мне нужно рассчитать коэффициент масштабирования и умножить на значение dp.
fun getScaleFactorForDp(context: Context) : Float {
return (1.0f/context.resources.configuration.fontScale)
}
fun getSpProp(context: Context, @DimenRes dimensionId: Int, scaleFactor : Float = 1f): DimensionBuilders.SpProp {
val spValue = (context.resources.getDimension(dimensionId) / context.resources.displayMetrics.density) * scaleFactor
return DimensionBuilders.SpProp.Builder()
.setValue(spValue)
.build()
}
-------------------------------------------------
val scaleFactor = getScaleFactorForDp(context)
LayoutElementBuilders.FontStyle.Builder()
.setSize(getSpProp(context, R.dimen.text_size,scaleFactor))
....
build()