[英]autoSizeTextType property for wear LayoutElementBuilders.Text
In Android wear TileService we have to use LayoutElementBuilders.Text
for displaying Text.在 Android wear TileService中,我们必须使用
LayoutElementBuilders.Text
来显示文本。 In xml we can use autoSizeTextType
for TextView.在 xml 中我们可以对 TextView 使用
autoSizeTextType
。
How can i apply this property in LayoutElementBuilders.Text
for wear TileService
?我如何在
LayoutElementBuilders.Text
中应用这个属性来磨损TileService
?
I didn't find any method in the Builder.我没有在 Builder 中找到任何方法。
Here i am sharing my solution to solve my problem.在这里,我分享我的解决方案来解决我的问题。
Requirement was not to change font size when user change display font size from setting.当用户从设置中更改显示字体大小时,要求不更改字体大小。
For fixed size i have to use font size in dp
in dimen
file like 20dp
.对于固定大小,我必须在
dimen
文件中使用dp
中的字体大小,如20dp
。
In DimensionBuilders.SpProp.Builder
class method setValue
expect value in sp
.在
DimensionBuilders.SpProp.Builder
class 方法setValue
中期望值在sp
中。
In LayoutElementBuilders.FontStyle.Builder
class method setSize
expect SpProp
.在
LayoutElementBuilders.FontStyle.Builder
class 方法setSize
期望SpProp
。
So i have to calculate a scale factor and multiply with dp value.所以我必须计算一个比例因子并乘以 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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.