91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中自定義View的MeasureSpec使用

發布時間:2020-07-08 07:24:36 來源:網絡 閱讀:328 作者:溫華平 欄目:移動開發

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

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

 

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

 

onMeasure傳入的widthMeasureSpec和heightMeasureSpec不是一般的尺寸數值,而是將模式和尺寸組合在一起的數值。我們需要通過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指定為具體數值時如andorid:layout_width="50dip",或者為FILL_PARENT是,都是控件大小已經確定的情況,都是精確尺寸。

 

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

 

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

 

方法有:

 

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

   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)

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

行唐县| 灌南县| 云浮市| 凤凰县| 河池市| 马尔康县| 纳雍县| 遵义市| 安徽省| 游戏| 桃源县| 固镇县| 丹寨县| 时尚| 织金县| 尚义县| 南丹县| 吉隆县| 汉沽区| 定南县| 田林县| 石景山区| 海安县| 郑州市| 长垣县| 化州市| 资阳市| 藁城市| 正宁县| 伊宁县| 洪雅县| 九寨沟县| 泰安市| 嵊泗县| 南投市| 那曲县| 邵阳市| 襄汾县| 达州市| 高雄县| 准格尔旗|