計算控制項尺寸

2021-05-28 13:56:05 字數 1648 閱讀 7962

除非你總是需要乙個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...