android 自定义控件,自定义属性设置
做listView的上拉下拉刷新,网上找了个历程。但是有些界面只有上拉刷新,有些界面是下拉刷新。觉得应该在xml里定义一个属性控制上下拉使能。
0、关于自定义控件:
自定义控件设计主要方式有:a) 继承于一种控件延伸自己的应用 b) 自己绘制,调用回调方法(监听的方式内部就是回调)
1、自定义属性设计
1.1 创建一个xml属性。在res / value 目录下创建一个attrs.xml 文件
<declare-styleablename="名称
= 自定义属性的类名">
1.2 在具体的自定义控件 文件中使用(xml布局文件)
xmlns:test="http://schemas.android.com/apk/res/com.miloisbadboy"
test:is_up = "true"
test:is_down = "true"
note: xmlns:test="http://schemas.android.com/apk/res/com.miloisbadboy" 这句不加后续步骤是得不到自定义属性值的,但是又不会报错
其中test就是上文中 test:is_up的前缀名字了(域)
com.miloisbadboy 包名
1.3 在java代码中使用
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PullToRefreshView);//attrs 是自定义控件构造函数中传回来的 接着的是styleable的名字也就是自定义控件的名字
is_up = a.getBoolean(R.styleable.PullToRefreshView_is_up, false); //第一个值为attrs中的对应字段,系统字段用小横杆链接,第二个参数是默认参数
is_down = a.getBoolean(R.styleable.PullToRefreshView_is_down, false);
PullToRefreshView_is_down 类名加自定义属性名。option+/ 不能提示的话,只能重启eclipse了
属性值设置参考:
http://blog.csdn.net/ygc87/article/details/7336664
注:
format="reference"
可以直接使用资源的id 比如@drawable