2013-04-17 40 views
2

我有以下代碼來查找屏幕尺寸,計算屏幕上有多少文本適合。查找行間距的高度

現在我需要知道屏幕上有多少條線。我有從上升到下降的文本大小。我需要知道行距的高度。 getFontSpacing還提供了從上升到下降的值。

有誰知道是否有找到行距的方法?

//Code for Getting screen Dimensions 
    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y; 

    //Breaking Text When Width Is Filled 
    Paint p = new Paint(); 
    p.setTextSize(60); 
    int textNum = p.breakText(sText, 0, 20, forOrBack, width, null); 

    //Working Out How Many Lines Can Be Entered In The Screen 
    float fHeight = p.descent() - p.ascent(); 
    int tHeight = (int) fHeight; 
    int numLines = height/tHeight; 

回答

2
Paint.FontMetrics fm = paint.getFontMetrics(); 
float fullHeight = fm.top - fm.bottom; 

至於我記得,fm.bottom < 0,因此通過減去你實際上

Math.abs(fm.top) + Math.abs(fm.bottom) 

該值比上升,下降大,而且,我想,它是實際的線路大小。

您可以考慮在設置TextSize之後使用TextView.getLineHeight(),並且在佈局完成之後(如在OnWindowFocusChanged中)優先使用TextView.getLineHeight()。

+0

誠然,這樣,我得到了一個更大的數字,雖然仍是不文本高度+間隔的實際值。 – SitRock

+0

關於setLineSpacing()選項,是否知道行間距高度是否受文本大小的影響,也就是說,如果文本大小發生變化,它會發生變化,如果是這樣,是否與行距高度的變化有一定比例。 – SitRock

+0

對不起,沒有注意到編輯我會檢查出來。 – SitRock

2

下將返回建議行間距

textView.getPaint().getFontSpacing() 

你可以得到你的高度文本的幾種方法。我更喜歡paint的getTextBounds方法,只是將這兩個值相加在一起