自定義控件. android
1,寫一個自定義控件類繼承系統的一個佈局.(5大布局) ,重寫3個構造方法 定義checked方法判斷當前自定義控件是否被選中(若是自定義控件裏面有CheckBox,能夠把CheckBox找到,判斷它是否被選中)
能夠再寫一個方法來設置當前控件的選中狀態:setChecked(); 要更改裏面的內容還要寫方法 數組
2,在res_layout目錄下建立layout:你要顯示的樣式,注意:若是裏面有checkbox,須要注意他的點擊和焦點 app
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" />
this
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="http://schemas.android.com/apk/res/android" 後添加本身的名稱空間
xmlns:xxx="http://schemas.android.com/apk/res/cn.xxx.mobilesafe"
這時就能夠在自定義的控件裏面設置它的屬性,以下:
<com.example.myapplication.SettingView
android:id="@+id/sv_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xxx:title = "我是標題"
xxx:content = "我是內容"/>
7,在自定義控件類中的構造方法裏面: orm
//把屬性集和咱們定義的屬性數組創建對應關係
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代碼中找到自定義控件,進行操做 xml