如何实现为Android的textStyle属性绑定自定义属性?
问题解决:自定义属性绑定textStyle生效方案
你遇到的问题核心是自定义属性类型不匹配:Android的android:textStyle是枚举类型(对应normal=0、bold=1、italic=2),但你定义的textViewWeight默认是无类型的字符串属性,系统没法把字符串"bold"转换成textStyle需要的枚举值,所以引用后不生效。
要实现这种绑定,必须让自定义属性的类型和textStyle一致,具体步骤如下:
修改attr.xml,定义枚举类型的自定义属性
把你的textViewWeight属性改成枚举类型,枚举值和原生textStyle对应:<attr name="textViewWeight"> <enum name="normal" value="0" /> <enum name="bold" value="1" /> <enum name="italic" value="2" /> </attr>保持styles.xml的赋值写法不变
之前的赋值写法无需修改,因为枚举属性接受对应的name值:<item name="textViewWeight">bold</item>在TextView样式中正常引用属性
原来的引用写法保留即可,现在系统能正确识别枚举值并映射到textStyle:<style name="TextStyle" parent="TextAppearance.AppCompat"> <item name="android:textStyle">?attr/textViewWeight</item> </style>
这样修改后,自定义属性就能正常绑定到android:textStyle,实现动态控制字体粗细的需求。
内容的提问来源于stack exchange,提问作者TiaN
相关产品推荐
相关产品推荐

