如何从自定义属性中读取维度值?
Posted
技术标签:
【中文标题】如何从自定义属性中读取维度值?【英文标题】:How to read dimension values from custom attribute? 【发布时间】:2021-02-04 13:48:48 【问题描述】:我有完全由我自己的 xml 组成的自定义按钮。我可以为它设置样式、颜色和文本+图标,但现在我需要设置自定义文本大小。
我在我的样式属性中添加了新属性<attr name="l_buttonTextSize" format="dimension"/>
,然后我从维度app:l_buttonTextSize="@dimen/text_small"
中设置了textSize 的值。但是我在按钮初始化时看不到它。
这就是我读取该值的方式:
val buttonTxtSize = typedArray.getFloat(btnTextSizeIndex, resources.getDimension(R.dimen.text_medium))
setButtonTextSize(buttonTxtSize)
fun setButtonTextSize(value: Float)
buttonText.setTextSize(TypedValue.COMPLEX_UNIT_PX, value)
我有这个例外:
java.lang.NumberFormatException: For input string: "12.0sp"
看起来像发送字符串而不是维度值作为浮点数。
【问题讨论】:
getDimension
而不是getFloat
?
【参考方案1】:
您可以使用getDimensionPixelSize
val buttonTxtSize = typedArray.getDimensionPixelSize(btnTextSizeIndex, resources.getDimension(R.dimen.text_medium))
【讨论】:
以上是关于如何从自定义属性中读取维度值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从自定义插件设置 Gradle Artifactory Publish 插件默认配置/属性