2012-12-27 47 views
6

我無法找到任何地方有提到如何測量Textview中的getTextSize()。從視覺測試來看,它似乎不包括下行,但似乎包括上行。它似乎也不是從基線開始的。Android TextView的getTextSize()它包括下行,上行

http://en.wikipedia.org/wiki/Descender

這是它的但是從谷歌羅曼蓋伊最近剛剛提到忽略了問題的一部分。

http://www.mail-archive.com/[email protected]/msg08514.html

,因爲我需要這個,因爲我用化合物可繪製,我需要能夠被拉伸對準在不同設備上的文字。

這裏是代碼我用於測試的化合物,可繪製觸及了一圈邊緣

tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX, 100); 
tvData.setText("agB5ãÂ"); 

int size = (int)tvData.getTextSize(); 
Drawable img = getResources().getDrawable(R.drawable.circle_white_full_72).mutate(); 
img.setBounds(0 , 0 , size , size); 
tvData.setCompoundDrawables(null, null, img, null); 

下面是結果 http://i.imgur.com/zUEzB.png

,你可以看到它似乎不使用伸和上行者。

這裏是繪製的圖像,如果其他人想測試 http://i.imgur.com/Yhf8b.png

當使用

int size = (int)tvData.getTextSize() *80/100; 

下面是結果改變圖像的文字大小的80%,與圖像換位上100%圖像的頂部。也許setCompoundrawables是做它自己的縮放

enter image description here

我試圖測量的字體和繪製的中點,並將其關閉。這是一個突出顯示它的圖像enter image description here

最後,我將可繪製的50像素向左移動,然後測量輸出,它是字體文本基線到基線的高度的一半,因爲setTextSize設置爲100px。

Android必須使用其他佈局來縮放和定位複合繪圖。也許我應該爲此創建另一個問題。 這是一個突出顯示基線到基線的圖像。 enter image description here

+0

我知道字體高度意味着「包括上升,但不是下降」,但我似乎無法找到一個權威的參考來回答你的問題。所以現在,傳聞證據必須這樣做:我一直把「字體高度」理解爲你所描述的那種。 – Barend

+0

想一想,「從基線到基線」是等價的,並且在域內更有意義。 – Barend

+0

@BarendGarvelink我相信這將是領先的。 – kcoppock

回答

3

從一些輕度測試,它似乎是從上升到下降(文字大小=下降 - 上升)。做了一些調試與TextPaint驗證,只是要更具體一點,我所做的:

Paint.FontMetricsInt metrics; 
for(int i = 1; i < 100; i++) { 
    mTextPaint.setTextSize(i); 
    metrics = mTextPaint.getFontMetricsInt(); 
    if((metrics.descent - metrics.ascent) != i) Log.v("type", "Not equal"); 
} 

它爲每個值堅守。

+0

這裏是我做的測試 tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX,100); \t \t tvData.setText(「agB5ã」); \t \t \t \t int size =(int)tvData.getTextSize(); \t \t Drawable img = getResources()。getDrawable(R.drawable.circle_white_full_72).mutate(); \t \t img.setBounds(0,0,size,size); \t \t tvData.setCompoundDrawables(null,null,img,null); 這裏是結果 http://i.imgur.com/zUEzB.png 你可以看到它似乎並沒有使用下行和上行。 – pt123

+0

我已經在主要問題 – pt123

+1

'metrics.descent - metrics.ascent'中添加了我的測試代碼這就是我所需要的! – amram99