Android 自定義View並新增屬性

2021-06-23 02:18:31 字數 2379 閱讀 7493

本文主要介紹如何為自定義的view新增屬性以及屬性的型別。**示例定義見dropdowntorefreshlistview,呼叫見dropdowntorefreshlistviewdemo

**(1、新增自定義view的屬性檔案

在res/values中新建attrs.xml檔案(檔名可另取,不過推薦用attrs.xml,可以將自定義屬性都放入其中),內容為

按 ctrl+c 複製**

按 ctrl+c 複製**

定義名為myviewdefinedattr的屬性列表,這個name命名也可以用下劃線形式。name會在下面第二步中使用。

其中name為屬性名,format為屬性型別,可以為boolean, string, integer, dimension, float, reference, color, fraction, enum, flag及其混合。具體定義及呼叫方式見本文最後關於自定義屬性的介紹。

2、自定義view中獲取屬性值

按 ctrl+c 複製**

按 ctrl+c 複製**

從上面可以看出,主要是通過context.obtainstyledattributes得到屬性及其值的對應列表。

ta.getboolean(r.styleable.myviewdefinedattr_attr1, true);表示得到屬性名為attr1的boolean值,若不存在該屬性,則預設為true。這裡的r.styleable.myviewdefinedattr_attr1為第一步中的屬性列表名_屬性名。

ta.recycle();為**系統資源。

3、呼叫自定義view

按 ctrl+c 複製**

按 ctrl+c 複製**

呼叫的主體為中內容,需要注意的是跟上面**類似在外面的布局檔案中加入自己的命名空間再通過命名空間呼叫屬性,即

xmlns:myviewxmlns="",其中myviewxmlns為空間名可自取,值為加當前應用的包名,即androidmanifest.xml中manifest節點的package值,如下

4、自定義屬性的型別

format表示的屬性型別可以為boolean, string, integer, dimension, float, reference, color, fraction, enum, flag及其混合。

(1) boolean表示布林值,呼叫如 xx:attr1="false"

(2) integer表示整型,呼叫如 xx:attr1="1"

(3) dimension表示尺寸值,呼叫如 xx:attr1="42dp"

(4) float表示浮點型,呼叫如 xx:attr1="0.7"

(5) color表示顏色值,呼叫如 xx:attr1="#00ff00"

(6) string表示字串,呼叫如 xx:attr1="#adbddd"

(7) reference表示參考某一資源id,呼叫如 xx:attr1 = "@drawable/id"

(8) fraction表示百分數,呼叫如 xx:attr1="30%"

以上型別定義都為

(9) enum表示列舉值,定義為

<

attr

name

="enum_attr"

>

<

enum

name

="horizontal"

value

="0"

/>

<

enum

name

="vertical"

value

="1"

/>

attr

>

呼叫如 xx:attr1="horizontal"

(10) flag表示位或運算,定義為

按 ctrl+c 複製**

按 ctrl+c 複製**

呼叫如:xx:attr1="stateunspecified | stateunchanged | statehidden"

(11) 混合型別,定義為

<

declare-styleable

name

= "combine_type"

>

<

attr

name

= "background"

format

= "reference|color"

/>

declare-styleable

>

呼叫如 xx:attr1 = "@drawable/id|#ddff00"

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...

Android 自定義View 一

android的ui介面都是由view和viewgroup及其派生類組合而成的。其中,view是所有ui元件的基類,而viewgroup是容納這些元件的容器,其本身也是從view派生出來的。androidui介面的一般結構可參見下面的示意圖 可見,作為容器的viewgroup可以包含作為葉子節點的v...