美文网首页
Android declare-styleable

Android declare-styleable

作者: 星空下奔跑 | 来源:发表于2018-04-08 17:24 被阅读0次

    应用场景

    当我们在自定义View/ViewGroup需要在自己的View上添加新的属性并且需要在编辑xml里就能定义时,就需要在resources中定义好相对应的declare-styleable。

    格式

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <declare-styleable name="SwipeLayout" >
    <attr name="enableRefresh" format="boolean" />
    <attr name="enableLoadmore" format="boolean" />
    <attr name="scrollingVelocity" format="integer" />
    <attr name="useDefaultHeaderAndFooter" format="boolean" />
    <attr name="dragEffect" format="integer" />
    </declare-styleable>
    </resources>

    运用

    在调用自定义自定义属性时就像下面这样:
    <?xml version="1.0" encoding="utf-8"?>
    <SwipeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:enableRefresh="true"
    >
    <...>
    <...>
    </SwipeLayout>

    代码

    然后在代码中读取这些属性时:
    TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.SwipeLayout);
    enableRefresh = a.getBoolean(R.styleable.SwipeLayout_enableRefresh, true);
    a.recycle();

    支持的类型

    每个attr的format有如下几种类型:
    integer、boolean、float、color、string、dimension、flag、enum、fraction、refrence

    1、integer顾名思义就是整数值
    2、boolean是true或者false
    3、float就是浮点类型
    4、color的话就是#+RGB/RGBA编码的格式如:#eeeeee00
    5、string可以使字符串也可以是一个字符串资源
    6、dimension如:100dip
    7、flag位运算
    <attr name="windowSoftInputMode">
    <flag name="stateUnspecified" value="1" />
    <flag name = "adjustNothing" value = "0x30" />
    </attr>
    8、enum枚举类型
    <attr name="language">
    <enum name="English" value="1"/>
    <enum name="Chinese" value="2"/>
    </attr>
    9、fraction百分数
    10、refrence资源的引用,可以是各种资源如layout,color,string

    另外,在定义可以指定多种format如:
    <attr name="background" format="reference|color" />
    使用:
    <ImageView android:background = "@drawable/图片ID|#00FF00"/>

    相关文章

      网友评论

          本文标题:Android declare-styleable

          本文链接:https://www.haomeiwen.com/subject/tqaagxtx.html