自适应容器需要用到自定义属性,先简单了解自定义属性
TextView View Button 都有一些属性,例如 android:layout_width,这些都是系统定义的属性,可以直接用,当然这些属性在有些时候不能满足我们的需求,最常见的是在自定义控件的时候,网上的开源框架很多都有自定义控件,使用到自定义属性,这些自定义属性可以改变控件的样式等,方便使用者修改,
先看下系统的定义的属性,这些属性都是在别人的博客看到的
<declare-styleable name="View">
<attr name="id" format="reference" />
<attr name="background" format="reference|color" />
<attr name="padding" format="dimension" />
...
<attr name="focusable" format="boolean" />
...
</declare-styleable>
<declare-styleable name="TextView">
<attr name="text" format="string" localization="suggested" />
<attr name="hint" format="string" />
<attr name="textColor" />
<attr name="textColorHighlight" />
<attr name="textColorHint" />
...
</declare-styleable>
<declare-styleable name="ViewGroup_Layout">
<attr name="layout_width" format="dimension">
<enum name="fill_parent" value="-1" />
<enum name="match_parent" value="-1" />
<enum name="wrap_content" value="-2" />
</attr>
<attr name="layout_height" format="dimension">
<enum name="fill_parent" value="-1" />
<enum name="match_parent" value="-1" />
<enum name="wrap_content" value="-2" />
</attr>
</declare-styleable>
<declare-styleable name="LinearLayout_Layout">
<attr name="layout_width" />
<attr name="layout_height" />
<attr name="layout_weight" format="float" />
<attr name="layout_gravity" />
</declare-styleable>
<declare-styleable name="RelativeLayout_Layout">
<attr name="layout_centerInParent" format="boolean" />
<attr name="layout_centerHorizontal" format="boolean" />
<attr name="layout_centerVertical" format="boolean" />
...
</declare-styleable>
可以看到一些控件都有自己的属性,TextView是继承自view同时也有View的属性,name是属性的名字,format表示该属性能接受到值的类型
类型有很多种就不说了,在写自定属性的时候自动会提示的
接下来开始写自定义属性了
首先在res->values创建一个存放自定义属性的xml(attrs.xml),下面是要用到的属性