自定义控件.
1,写一个自定义控件类继承系统的一个布局.(5大布局) ,重写3个构造方法 定义checked方法判断当前自定义控件是否被选中(如果自定义控件里面有CheckBox,可以把CheckBox找到,判断它是否被选中) 可以再写一个方法来设置当前控件的选中状态:setChecked(); 要更改里面的内容还要写方法
2,在res_layout目录下创建layout:你要显示的样式,注意:如果里面有checkbox,需要注意他的点击和焦点
3,用View.inflate(context, R.layout.view_setting, this); //把xml文件转化成对象,this:view对象以自己为父体 在三个构造方法中都要调用
4,在要用到自定义控件的layout.xml文件里面放入自定义控件,节点名称是自定义控件类的全名
<com.example.myapplication.SettingView android:id="@+id/sv_setting" android:layout_width="wrap_content" android:layout_height="wrap_content" />5,在value目录下创建一个attrs.xml文件,里面创建自定义控件的属性 <declare-styleable name="my_setting_view"> <attr name="title" format="string" /> //title属性是string类型 <attr name="content" format="string" /> </declare-styleable> 6,在activity中要使用自定义控件,就要在它的layout.xml中声明自己的名称空间: 在 xmlns:android="" 后添加自己的名称空间 xmlns:xxx="" 这时就可以在自定义的控件里面设置它的属性,如下: <com.example.myapplication.SettingView android:id="@+id/sv_setting" android:layout_width="wrap_content" android:layout_height="wrap_content" xxx:title = "我是标题" xxx:content = "我是内容"/> 7,在自定义控件类中的构造方法里面:
//把属性集和我们定义的属性数组建立对应关系
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.my_setting_view); String content = a.getString(R.styleable.my_setting_view_content); String title = a.getString(R.styleable.my_setting_view_title); tv_title.setText(title); //控件tv_title需要在view.inflate()后findViewbyId找到控件 tv_content.setText(content); a.recycle(); 8,在Activity代码中找到自定义控件,进行操作