在我們的自定義學(xué)習(xí)總結(jié)的第一篇,介紹了自定義控件的基本流程粘勒,幾個(gè)核心方法和核心api竞端,這篇主要介紹給自定義控件增加屬性,就像系統(tǒng)控件TextView有自己的屬性textSize,text一樣庙睡,我們自己自定義的控件也可以有自己的屬性事富,這樣就可以跟系統(tǒng)控件一樣,在我們的xml里面能用自己定義的屬性乘陪。
1.在values目錄下新建attrs.xml文件
<resources>
<declare-styleable name="SettingItemView">
<!-- 顯示不同的title內(nèi)容,這里的屬性名可隨意定義,但最好不要定義和現(xiàn)有屬性一致的名稱(chēng) -->
<attr name="item_title" format="string" />
</declare-styleable>
</resources>
我們只定義了一個(gè)屬性name统台,格式是string,format是值該屬性的取值類(lèi)型:
一共有:string,color,demension,integer,enum,reference,float,boolean,fraction,flag;
2.在activity_main.xml文件中定義名稱(chēng)空間和聲明屬性
<LinearLayout
android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
...
>
<com.xinguangnet.myphoto.view.SettingItemView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:item_title="我的設(shè)置1">
</com.xinguangnet.myphoto.view.SettingItemView>
請(qǐng)注意這句代碼 xmlns:app="http://schemas.android.com/apk/res-auto"啡邑,這個(gè)類(lèi)似于系統(tǒng)控件里的android贱勃,如果改成xmlns:ws="http://schemas.android.com/apk/res-auto",那么下面的 app:item_title="我的設(shè)置1"就要對(duì)應(yīng)改成 ws:item_title="我的設(shè)置1"
3.在構(gòu)造函數(shù)初始化自定義控件的時(shí)候獲取自定義屬性
// 讀取自定的屬性
TypedArray ta = context.obtainStyledAttributes(set,
R.styleable.SettingItemView);
//獲取自定義屬性的值
String title = ta.getString(R.styleable.SettingItemView_item_title);
//獲取完成后一定要做回收處理
ta.recycle();