自定义控件_属性介绍

以下示例中代码均在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();
    }

 


就这样









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值