乙個measurespec封裝了父布局傳遞給子布局的布局要求,每個measurespec代表了一組寬度和高度的要求。乙個measurespec由大小和模式組成。它有三種模式:unspecified(未指定),父元素部隊自元素施加任何束縛,子元素可以得到任意想要的大小;exactly(完全),父元素決定自元素的確切大小,子元素將被限定在給定的邊界裡而忽略它本身大小;at_most(至多),子元素至多達到指定大小的值。
它常用的三個函式:
1.static int getmode(int measurespec):根據提供的測量值(格式)提取模式(上述三個模式之一)
2.static int getsize(int measurespec):根據提供的測量值(格式)提取大小值(這個大小也就是我們通常所說的大小)
3.static int makemeasurespec(int size,int mode):根據提供的大小值和模式建立乙個測量值(格式)
這個類的使用呢,通常在
view
元件的onmeasure
方法裡面呼叫.
看看它的使用吧,listview.measureitem(view child)
首先乙個我們常用到的乙個有用的函式,
view.resolvesize(int size,int measurespec)
[html]view plain
copy
public static int resolvesize(int size, int measurespec)
return result;
}
9023 publicstatic
int makemeasurespec(int size, int mode)
[html]view plain
copy
private void measureitem(view child)
int childwidthspec = viewgroup.getchildmeasurespec(mwidthmeasurespec,
mlistpadding.left + mlistpadding.right, p.width);
int lpheight = p.height;
int childheightspec;
if (lpheight > 0) else
child.measure(childwidthspec, childheightspec);
}
注意,使用exactly和at_most通常是一樣的效果,如果你要區別他們,那麼你就要使用上面的函式view.resolvesize(int size,int measurespec)返回乙個size值,然後使用你的view呼叫setmeasureddimension(int,int)函式。
8406 protectedfinal
void setmeasureddimension(int measuredwidth, int measuredheight)
然後你呼叫view.getmeasuredwidth,view.getmeasuredheigth 返回的就是上面函式裡的mmeasuredwidth,mmeasuredheight的值。
MeasureSpec介紹及使用詳解
乙個measurespec封裝了父布局傳遞給子布局的布局要求,每個measurespec代表了一組寬度和高度的要求。乙個measurespec由大小和模式組成。它有三種模式 unspecified 未指定 父元素部隊自元素施加任何束縛,子元素可以得到任意想要的大小 exactly 完全 父元素決定自...
MeasureSpec介紹及使用詳解
乙個measurespec封裝了父布局傳遞給子布局的布局要求,每個measurespec代表了一組寬度和高度的要求。乙個measurespec由大小和模式組成。它有三種模式 unspecified 未指定 父元素部隊自元素施加任何束縛,子元素可以得到任意想要的大小 exactly 完全 父元素決定自...
MeasureSpec介紹及使用詳解
乙個measurespec封裝了父布局傳遞給子布局的布局要求,每個measurespec代表了一組寬度和高度的要求。乙個measurespec由大小和模式組成。它有三種模式 unspecified 未指定 父元素部隊自元素施加任何束縛,子元素可以得到任意想要的大小 exactly 完全 父元素決定自...