自定義屬性

2022-08-12 11:54:11 字數 2219 閱讀 5598

有以下幾個步驟:

自定義乙個customview(extends view )類

編寫values/attrs.xml,在其中編寫styleable和item等標籤元素

在布局檔案中customview使用自定義的屬性(注意namespace)

在customview的構造方法中通過typedarray獲取

自定義屬性的宣告檔案,在res/values 目錄下新建乙個 attrs.xml檔案

如要用系統定義過的android:text"屬性,不需要寫format

可以看一下系統中自定義屬性的檔案 sdk/platforms/android-xx/data/res/values/attrs.xml

有多個styleable都要用到的共同的屬性,在resources開頭進行定義,後續引用只需要引用名字就可以了

<?xml version="1.0" encoding="utf-8"?>12

34使用系統原有的屬性時,在前面加上android命名

typedarray array = context.gettheme().obtainstyledattributes(attrs, r.styleable.rectangleview, defstyleattr, 0);

//mtext = array.getstring(r.styleable.rectangleview_android_text);

mtextcolor = array.getcolor(r.styleable.rectangleview_textcolor, color.black);

mtextsize = array.getdimensionpixelsize(r.styleable.rectangleview_textsize, 40);

array.recycle(); //注意**12

345ondraw()

實現三個構造方法,在第三個構造方法中進行初始化、解析自定義屬性的值

初始化筆刷,mbounds是繪製時控制文字繪製範圍的長方形

public class rectangleview extends view implements view.onclicklistener

public rectangleview(context context, @nullable attributeset attrs)

public rectangleview(context context, @nullable attributeset attrs, int defstyleattr) {

super(context, attrs, defstyleattr);

//新建畫筆

mpaint = new paint(paint.anti_alias_flag); //抗鋸齒

mbounds = new rect();

//載入自定義屬性集合

typedarray array = context.gettheme().obtainstyledattributes(attrs, r.styleable.rectangleview, defstyleattr, 0);

// 將解析的屬性傳入到畫筆顏色變數當中(本質上是自定義畫筆的顏色)

// 第二個引數是預設設定顏色(即無指定color情況下使用)

//mtext = array.getstring(r.styleable.rectangleview_android_text);

mtextcolor = array.getcolor(r.styleable.rectangleview_textcolor, color.black);

mtextsize = array.getdimensionpixelsize(r.styleable.rectangleview_textsize, 40);

array.recycle(); //記得**

手動支援wrap_content屬性

但是此時,如果設定layout_width和layout_height 屬性為 wrap_content,並不會適應自身大小,而是填滿父控制項,和match_parent效果相同。

這是因為使用系統的onmeasure方法時,系統幫我們測量的高度和寬度都是match_parnet,當我們設定明確的寬度和高度時,系統幫我們測量的結果就是我們設定的結果;而當我們設定為wrap_content系統幫我們測量的結果也是match_parent的長度。

所以,當設定了wrap_content時,我們需要自己進行測量,即重寫onmesure方法:

自定義屬性

html view plain copy html head meta charset utf 8 title 自定義屬性 title script window.onload function script head body input type button value 按鈕 input ty...

自定義屬性

xmlns wen android orientation vertical android layout width fill parent android layout height wrap content 第二行是自定義標籤。格式如上,其中 xmlns wen 冒號後面是標籤名,在下面使用時...

自定義屬性

自定義屬性的步驟 1.首先使用在res目錄下的attr.xml檔案中,新建如下屬性集合 表示乙個屬性集合,名稱叫customprogerssbar3,這個屬性集合中包括的屬性用這種方式定義 關於format的型別有如下幾種 1.color 表示顏色,取值是乙個顏色值 屬性使用示例 2.dimensi...