Android 自定義控制項的xml屬性

2021-06-28 02:02:08 字數 4025 閱讀 7634



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...