自定义 view 添加自定义属性

给自定义 view 添加xml属性
步骤:
在 values 文件夹下的 attr.xml 文件中添加属性,name 为属性名,format 为属性类型,也可以在中添加枚举

<resources>
    <declare-styleable name="RecycleDetailView">
		<attr name="valueSize" format="dimension" />
		<attr name="nameSize" format="dimension" />
		<attr name="unitSize" format="integer" />
                <attr name="mode" format="integer">
                    	<enum name="speedMode" value="1"/>
                    	<enum name="powerMode" value="2"/>
                </attr>
</declare-styleable>
</resources>

在 xml 中使用自定义view 并给自定义的属性赋值

<RecycleDetailView
    android:id="@+id/test_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:valueSize = "12sp"
    app:nameSize = "12sp"
    app:unitSize = "12"
    />

在自定义 view 的代码中获取到在 xml 中赋予的属性

mContext = context
val a = context.obtainStyledAttributes(
    attrs,
    R.styleable.RecycleDetailView,
    defStyleAttr,
    0
)
val defaultValueSize = sp2PxFloat(19F)
val defaultNameSize = sp2PxFloat(11F)
val defaultUnitSize = 12
valueSize=a.getDimension(R.styleable.RecycleDetailView_valueSize, defaultValueSize)
nameSize=a.getDimension(R.styleable.RecycleDetailView_nameSize, defaultNameSize)
unitSize=a.getInt(R.styleable.RecycleDetailView_unitSize, defaultUnitSize)

a.recycle()
posted @ 2022-06-21 10:42  ClearMoon  阅读(124)  评论(0)    收藏  举报