1. 定義一些自定義屬性
建立乙個屬性xml檔案: values/attrs.xml, 內容如下:
<?xml version="1.0" encoding="utf-8"?>
該檔案是定義屬性名和格式的地方,需要用包圍所有屬性。
其中name為該屬性集的名字,主要用途是標識該屬性集。
在控制項的構造方法中獲取自定義屬性集合的時候,會使用該name。
如:typedarray a = context.obtainstyledattributes(attrs,
r.styleable.icontext);
如果某個屬性可同時傳兩種不同的屬性,則可以用「|」分割開即可。
2. 定義乙個能夠處理這些屬性值的view或者layout類
package com.test_customattributeset;
import android.content.context;
import android.content.res.typedarray;
import android.util.attributeset;
import android.util.log;
import android.widget.imageview;
import android.widget.linearlayout;
import android.widget.textview;
public class icontextview extends linearlayout
public icontextview(context context, attributeset attrs)
this.setorientation(orientation);
this.addview(mimageview);
mimageview.setpadding(left, top, right, bottom);
this.addview(mtextview, textviewindex);
}}
通過obtainstyledattributes方法獲得對屬性集的引用,用「a」的各種方法來獲取相應的屬性值。這裡需要注意的是,如果使用的方法和獲取值的型別不對的話,則會返回預設值。
因此,如果乙個屬性是帶兩//個及以上不用型別的屬性,需要做多次判斷,直到讀取完畢後才能判斷應該賦予何值。當然,在取完值的時候別忘了**資源。
類icontextview中只有兩個元素,imageview 和mtextview,通過從xml配置檔案中讀取屬性值來決定icon和text的內容、相對位置及其它屬性。
3. 在layout布局檔案中使用這個自定布局及其屬性
注意點:我們需要在這個布局檔案中加入了乙個新的命名空間:
xmlns:icontext=
其中「是固定的,「com.test_customattributeset
」是我們工程的包名。
"icontext"可以換成其他的任何名字.
使用如下方式使用自定義的屬性:
icontext:icon="@drawable/ic_launcher"
icontext:relation="icon_left"
icontext:text="hi,how are you!"
icontext:text_size="12sp" />
4. 在activity中使用該布局
package com.test_customattributeset;
import android.os.bundle;
import android.view.menu;
public class mainactivity extends activity
@override
public boolean oncreateoptionsmenu(menu menu)
}
執行效果如下圖:
附:android中自定義屬性的格式詳解
1. reference:參考某一資源id。
(1)屬性定義:
(2)屬性使用:
2. color:顏色值。
(1)屬性定義:
(2)屬性使用:
3. boolean:布林值。
(1)屬性定義:
(2)屬性使用:
4. dimension:尺寸值。
(1)屬性定義:
(2)屬性使用:
5. float:浮點值。
(1)屬性定義:
(2)屬性使用:
6. integer:整型值。
(1)屬性定義:
(2)屬性使用:
7. string:字串。
(1)屬性定義:
(2)屬性使用:
8. fraction:百分數。
(1)屬性定義:
(2)屬性使用:
android:interpolator = "@anim/動畫id"
android:fromdegrees = "0"
android:todegrees = "360"
android:pivotx = "200%"
android:pivoty = "300%"
android:duration = "5000"
android:repeatmode = "restart"
android:repeatcount = "infinite"
/>
9. enum:列舉值。
(1)屬性定義:
(2)屬性使用:
android:orientation = "vertical"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
>
10. flag:位或運算。
(1)屬性定義:
注意:屬性定義時可以指定多種型別值。
(1)屬性定義:
(2)屬性使用:
Android 自定義控制項
幹android也有一段的時間了,自定義這塊的東西覺得還是很有比較複習一下基礎的東西。自定義控制項和自定義元件基本上的使用都是在專案中基本的android控制項滿足不了需求的時候使用的。所以,如果要高出特別炫的特效,或者比較特殊的控制項排列方式,例如瀑布流,那麼就要好好學學自定義咯。首先,先簡單的介...
android自定義控制項
android自定義控制項 二 入門,繼承view 說說android 兩種為自定義元件新增屬性的使用方法和區別 自定義控制項的屬性 自定義控制項 今天花了3,4個小時看了自定義控制項,看 懂了,還沒有實踐,因為時間不夠,日後實踐。總結下 自定義控制項有3種方式 繼承已有控制項 繼承乙個容器控制項,...
Android自定義控制項
android學習筆記,整理給自己複習的時候看的,謝謝!1.自定義開關 1.宣告介面物件 public inte ce onswitchstateupdatelistener 2.新增設定介面物件的方法,外部進行呼叫 public void setonswitchstateupdatelistene...