首先,你需要在value資料夾下新建乙個attr.xml檔案(檔名可以任取,但不能有大寫的字母開頭).
內容大概有這些
<?xml version="1.0" encoding="utf-8"?>
name="circletip" >
name="circletipcolor"
format="color" />
name="circletipradiu"
format="dimension" />
declare-styleable>
resources>
稍稍解釋下
定義attr名稱
"circletipcolor"
format="color" />
定義attr屬性名稱和對應的值的型別
接著使用這些attr屬性,一般習慣做法是在建構函式裡面對傳入的attr做解析,因為這些屬性值在xml布局檔案裡面定義了,我們需要取到作為view初始化的資料,接下來看怎麼解析。
建構函式裡面一般會傳入乙個attributeset物件(如果沒有的話,那我們就取不到了),這個物件可以幫助我們取到xml定義的值。
typedarray typedarray = context.obtainstyledattributes(attrs,r.styleable
.circletip);
這句可以幫助我們取到xml裡面我們剛剛定義的declare-styleable的屬性初始值。會把它存到typedarray裡,我們把裡面的值取出來就好了。
mbgcolor = typedarray.getcolor(r.styleable
.circletip_circletipcolor, defaultcolor);
這樣就取出來了。是不是很簡單。
接著我們看看如何在xml布局檔案裡面使用新定義的attr屬性。
首先你需要在使用的地方宣告命名空間,那什麼是命名空間呢?
xmlns:circle=""
諾,xmlns表示宣告乙個命名空間,命名空間的作用之一就是簡化屬性賦值,我們可以用xmlns後面跟著的單詞表示「=」號後面比較長的空間名。命名空間宣告完了以後就是設定屬性值,用法就跟android:text一樣啦,還是
給個例子。
circle:circletipradiu="7dp"
需要注意的是命名空間的寫法
.com/apk/res/ + 應用包名
先寫到這裡。
下面介紹下format的取值型別
reference:參考某一資源id。
(1)屬性定義:
(2)屬性使用:
color:顏色值。
(1)屬性定義:
(2)屬性使用:
boolean:布林值。
(1)屬性定義:
(2)屬性使用:
dimension:尺寸值。
(1)屬性定義:
(2)屬性使用:
float:浮點值。
(1)屬性定義:
(2)屬性使用:
integer:整型值。
(1)屬性定義:
(2)屬性使用:
string:字串。
(1)屬性定義:
(2)屬性使用:
fraction:百分數。
(1)屬性定義:
(2)屬性使用:
enum:列舉值。
(1)屬性定義:
(2)屬性使用:
flag:位或運算。
(1)屬性定義:
(2)屬性使用:
注意:
屬性定義時可以指定多種型別值。
(1)屬性定義:
(2)屬性使用:
如何自定義乙個UIProgressView
viewcontroller.m裡的檔案 import viewcontroller.h import myprogressview.h inte ce viewcontroller end implementation viewcontroller void viewdidload void di...
php 自定義條件,php如何自定義乙個方法
在php中可以通過 function foo arg 1,arg 2,arg n 形式定義乙個方法。使用者自定義函式 乙個函式可由以下的語法來定義 example 1 展示函式用途的偽 function foo arg 1,arg 2,arg n echo example function.n re...
如何自定義乙個記憶體池?
目錄 我們先寫個簡單的第一版記憶體分配器 第二版第三版alloctor 第四版alloctor 推進式單向鍊錶操作 分配24 size個記憶體空間 可以見圖prealloctor class firstalloctor firstalloctor std size t get void showwh...