除非你總是需要乙個100
×100
畫素的控制項,否則,你必須要重寫
onmeasure。
onmeasure
方法在控制項的父元素正要放置它的子控制項時呼叫。它會問乙個問題,「你想要用多大地方啊?」,然後傳入兩個引數——
widthmeasurespec和heightmeasurespec。它們指明控制項可獲得的空間以及關於這個空間描述的元資料。
比返回乙個結果要好的方法是你傳遞
view
的高度和寬度到setmeasureddimension方法裡。
接下來的**片段給出了如何重寫
onmeasure
。注意,呼叫的本地空方法是來計算高度和寬度的。它們會譯解widthheightspec和heightmeasurespec值,並計算出合適的高度和寬度值。
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
private int measureheight(int measurespec)
private int measurewidth(int measurespec)
邊界引數——widthmeasurespec和heightmeasurespec
,效率的原因以整數的方式傳入。在它們使用之前,首先要做的是使用
measurespec
類的靜態方法
getmode
和getsize
來譯解,如下面的片段所示:
int specmode = measurespec.getmode(measurespec);
int specsize = measurespec.getsize(measurespec);
依據specmode的值,如果是at_most,specsize 代表的是最大可獲得的空間;如果是exactly,specsize 代表的是精確的尺寸;如果是unspecified,對於控制項尺寸來說,沒有任何參考意義。
當以exact
方式標記測量尺寸,父元素會堅持在乙個指定的精確尺寸區域放置
view
。在父元素問子元素要多大空間時,at_most指示者會說給我最大的範圍。在很多情況下,你得到的值都是相同的。
在兩種情況下,你必須絕對的處理這些限制。在一些情況下,它可能會返回超出這些限制的尺寸,在這種情況下,你可以讓父元素選擇如何對待超出的
view
,使用裁剪還是滾動等技術。
接下來的框架**給出了處理
view
測量的典型實現:
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
private int measureheight(int measurespec)
else if (specmode == measurespec.exactly)
return result;
}private int measurewidth(int measurespec)
else if (specmode == measurespec.exactly)
return result;
}
MFC TabCtrl 控制項修改標籤尺寸
注意 無論那種方法,都要先設定tab控制項的style屬性為fixed width.第一種方法 mfc,tabcontrol控制項改變標籤大小 csdn部落格 csize size,size1 size.cx 150 size.cy 40 size1 m tab.setitemsize size 第...
計算字型大小及尺寸
computing metrics for a single line of text sizewithfont sizewithfont forwidth linebreakmode 將字串放入指定寬度,如果不夠,就依據換行方式截斷字串,返回其大小。sizewithfont minfontsize...
Pytorch 卷積尺寸計算
公式來自官方文件,戳 conv3d pytorch master documentation 本文僅作記錄,順便練習latex語法 h frac 2 times padding 0 dilation 0 times kernel size 0 1 1 1 w frac 2 times padding...