Android中自定義View的MeasureSpec使用-創(chuàng)新互聯(lián)

一般來說,自定義控件都會去重寫View的onMeasure方法,因為該方法指定該控件在屏幕上的大小。

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為東風等服務建站,東風等地企業(yè),進行企業(yè)商務咨詢服務。為東風企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

onMeasure傳入的兩個參數(shù)是由上一層控件傳入的大小,有多種情況,重寫該方法時需要對計算控件的實際大小,然后調(diào)用setMeasuredDimension(int, int)設置實際大小。

onMeasure傳入的widthMeasureSpec和heightMeasureSpec不是一般的尺寸數(shù)值,而是將模式和尺寸組合在一起的數(shù)值。我們需要通過int mode = MeasureSpec.getMode(widthMeasureSpec)得到模式,用int size = MeasureSpec.getSize(widthMeasureSpec)得到尺寸。

mode共有三種情況,取值分別為MeasureSpec.UNSPECIFIED, MeasureSpec.EXACTLY, MeasureSpec.AT_MOST。

1、MeasureSpec.EXACTLY是精確尺寸,當我們將控件的layout_width或layout_height指定為具體數(shù)值時如andorid:layout_width="50dip",或者為FILL_PARENT是,都是控件大小已經(jīng)確定的情況,都是精確尺寸。

2、MeasureSpec.AT_MOST是大尺寸,當控件的layout_width或layout_height指定為WRAP_CONTENT時,控件大小一般隨著控件的子空間或內(nèi)容進行變化,此時控件尺寸只要不超過父控件允許的大尺寸即可。因此,此時的mode是AT_MOST,size給出了父控件允許的大尺寸。

3、MeasureSpec.UNSPECIFIED是未指定尺寸,這種情況不多,一般都是父控件是AdapterView,通過measure方法傳入的模式。

方法有:

  //這個是由我們給出的尺寸大小和模式生成一個包含這兩個信息的int變量,這里這個 模式這個參數(shù),傳三個常量中的一個。

  public static int makeMeasureSpec(int size, int mode)

//這個是得到這個變量中表示的模式信息,將得到的值與三個常量進行比較。

public static int getMode(int measureSpec)

//這個是得到這個變量中表示的尺寸大小的值。

public static int getSize(int measureSpec)

//把這個變量里面的模式和大小組成字符串返回來,方便打日志

 public static String toString(int measureSpec)

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站標題:Android中自定義View的MeasureSpec使用-創(chuàng)新互聯(lián)
文章地址:http://muchs.cn/article28/cdgpjp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、靜態(tài)網(wǎng)站、云服務器、搜索引擎優(yōu)化、虛擬主機企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化