android自己定義控制項 自己定義View屬性

2021-09-06 17:57:59 字數 2460 閱讀 4935

1、自己定義view的屬性

2、在view的構造方法中獲得我們自己定義的屬性

3、重寫onmesure

4、重寫ondraw

3這個步驟不是必須,當然了大部分情況下還是須要重寫的。

1、自己定義view的屬性,首先在res/values/  下建立乙個attrs.xml , 在裡面定義我們的屬性和宣告我們的整個樣式。

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

定義了字型,字型顏色,字型大小3個屬性,format是值該屬性的取值型別:

一共同擁有:string,color,demension,integer,enum,reference,float,boolean,fraction,flag;

編寫的時候工具會提醒你使用哪種,不知道也能夠google搜尋下

接下來就自己定義view

public class customtitleview extends view

public customtitleview(context context, attributeset attrs)

public customtitleview(context context, attributeset attrs, int defstyleattr)

}

定義完自己定義的view ,就該呼叫我們自己定義的view了。

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

注意**中的這行,自己定義命名空間,com.example.androiddemo是專案包路徑

xmlns:title=""

使用自己定義命名空間:

title:txtname="你好"

title:txtcolor="#ffffff"

title:txtsize="16sp"

在view的構造方法中,獲得我們的自己定義的樣式 

public class customtitleview extends view

public customtitleview(context context, attributeset attrs)

public customtitleview(context context, attributeset attrs, int defstyleattr)

}typedarray.recycle();

/*** 獲得繪製文字的寬和高

*/mpaint = new paint();

mpaint.settextsize(txtsize);

// mpaint.setcolor(mtitletextcolor);

mbounds = new rect();

mpaint.gettextbounds(txtname, 0, txtname.length(), mbounds);

}@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec) else

if (heightmode == measurespec.exactly)

else

setmeasureddimension(width, height);

}@override

protected void ondraw(canvas canvas)

}

當中

measurespec.exactly推斷你傳人的寬,高是不是精確賦值
android:layout_width="wrap_content"

android:layout_height="wrap_content"

假設是wrap_content,

mpaint.settextsize(txtsize);

mpaint.gettextbounds(txtname, 0, txtname.length(), mbounds);

float textwidth = mbounds.width();

int desired = (int) (getpaddingleft() + textwidth + getpaddingright());

width = desired;

假設是200dp這類精確的寬高值,

if (widthmode == measurespec.exactly)

效果圖 ,是不是非常好用呢

Android自己定義控制項面板

對於android的自帶控制項,其外觀僅僅能說中規中矩,而我們平時所示android應用中,乙個簡單的button都做得十分美觀。甚至於很多button在按下時的外觀都有一定變化,使用者體驗十分好。這當中,就涉及到了android自己定義控制項屬性的操作方法,下面操作以實現自己定義button 為例...

Android 如何自己定義控制項的樣式 Shape

android中常常使用shape來定義控制項的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結 先看下面的 複製到剪貼簿 xml html shape solid android color ff9d77 gradient android startcolor ff...

Android自己定義圓角ImageView

package com.yulongfei.imageview import android.content.context import android.content.res.typedarray import android.graphics.bitmap import android.gra...