Свойство 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()
Другие вопросы по тегам