背景
有时候Android 提供的原生View TextView等不满足我们的需要,或者自己自定义的一些View 为了扩展一些自己的需求我们会重新定义一些函数.这些函数从xml中获取一些配置内容,这个时候我们就需要用到自定义属性这方面的内容.
自定义属性实现的步骤
1.在res/values/attrs.xml中配置View的自定义属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="FlowLayoutStyle">
<!-- Labels的文字-->
<attr name="flTextColor" format="color" />
<!-- Labels的背景色-->
<attr name="flBackgroundColor" format="color" />
<!-- Labels的角度大小-->
<attr name="flAngleSize" format="float" />
<!-- Labels的左右 Margin-->
<attr name="flMarginLeftAndRight" format="integer" />
<!-- Labels的上下 Margin-->
<attr name="flMarginTopAndBottom" format="integer" />
<!-- Labels 内容上下padding -->
<attr name="flPaddingTopAndBottom" format="integer" />
<!-- Labels 内容左右padding -->
<attr name="flPaddingLeftAndRight" format="integer" />
</declare-styleable>
</resources>
注意:
name:是自定义属性的名字
format:是紫荆一属性数据的格式
2.xml布局中引用属性且配置初始数据
<com.wkq.flow.FlowLayout
android:background="@color/teal_200"
android:id="@+id/fl"
android:layout_width="wrap_content"
app:flBackgroundColor="@color/purple_200"
app:flTextColor="@color/white"
app:flAngleSize="10"
app:flPaddingLeftAndRight="40"
app:flPaddingTopAndBottom="10"
app:flMarginLeftAndRight="40"
app:flMarginTopAndBottom="30"
android:layout_height="wrap_content"/>
- 获取自定义属性配置的数据
var style = context.obtainStyledAttributes(attrs, R.styleable.FlowLayoutStyle)
var bgcolor = style.getColor( R.styleable.FlowLayoutStyle_flBackgroundColor,context.resources.getColor(R.color.bg_color))
var textColor = style.getColor( R.styleable.FlowLayoutStyle_flTextColor, context.resources.getColor(R.color.text_color) )
var mLeftAndRightPadding = style.getInt(R.styleable.FlowLayoutStyle_flPaddingLeftAndRight, 10)
var mTopAndBottomPadding = style.getInt(R.styleable.FlowLayoutStyle_flPaddingTopAndBottom, 5)
var leftAndRightMargin = style.getInt(R.styleable.FlowLayoutStyle_flMarginLeftAndRight, 10)
var topAndBottomMargin = style.getInt(R.styleable.FlowLayoutStyle_flMarginTopAndBottom, 5)
var flAngleSize = style.getFloat(R.styleable.FlowLayoutStyle_flAngleSize, 10f)
总结
自定义属性的一些简单属性设置以及获取,方便后期CV
欢迎点赞!!!
网友评论