您的位置:首页 > 其它

自定义控件_属性介绍

2016-07-14 17:16 120 查看
以下示例中代码均在values/attrs.xml 中定义,属性均可随意命名。

1. reference:参考某一资源ID。

示例:

<declare-styleable name = "ruiyi">
<attr name = "background" format = "reference" />
<attr name = "src" format = "reference" />
</declare-styleable> 2. color:颜色值。

示例:
<declare-styleable name = "ruiyi">
<attr name = "textColor" format = "color" />
</declare-styleable> 3. boolean:布尔值。

示例:
<declare-styleable name = "ruiyi">
<attr name = "focusable" format = "boolean" />
</declare-styleable> 4. dimension:尺寸值。

示例:
<declare-styleable name = "ruiyi">
<attr name = "layout_width" format = "dimension" />
</declare-styleable>
5. float:浮点值。

示例:
<declare-styleable name = "ruiyi">
<attr name = "fromAlpha" format = "float" />
<attr name = "toAlpha" format = "float" />
</declare-styleable>
6. integer:整型值。

示例:
<declare-styleable name = "ruiyi">
<attr name = "frameDuration" format="integer" />
<attr name = "framesCount" format="integer" />
</declare-styleable>
7. string:字符串。

示例:
<declare-styleable name = "ruiyi">
<attr name = "text" format = "string" />
</declare-styleable>
8. fraction:百分数。

示例:
<declare-styleable name="ruiyi">
<attr name = "pivotX" format = "fraction" />
<attr name = "pivotY" format = "fraction" />
</declare-styleable>
9. enum:枚举值。

示例:
<declare-styleable name="ruiyi">
<attr name="orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
</declare-styleable>
10. flag:位或运算。

示例:
<declare-styleable name="ruiyi">
<attr name="windowSoftInputMode">
<flag name = "stateUnspecified" value = "0" />
<flag name = "stateUnchanged" value = "1" />
<flag name = "stateHidden" value = "2" />
<flag name = "stateAlwaysHidden" value = "3" />
</attr>
</declare-styleable>
11.多类型。

示例:
<declare-styleable name = "ruiyi">
<attr name = "background" format = "reference|color" />
</declare-styleable>

12.引用API变量。

示例:

<declare-styleable name="ruiyi">
<attr name="android:text1" />
<attr name="text2" format="string" />
</declare-styleable>ta.getString(R.styleable.ruiyi_android_text)

获取属性时有一点点区别:

定义时:

1-11 存在属性的自定义name 和指定的类型(format)

12  引用系统属性时,仅仅只有name,不能重复指定类型

引用时:

所以类型获取都可以借助TypedArray 读取,以12属性为例

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ruiyi);

String text1 = ta.getString(R.styleable.ruiyi_android_text1); //系统属性
<pre name="code" class="java"> String text2 = ta.getInteger(R.styleable.ruiyi_text2); //自定义属性

ta.recycle();
}


就这样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: