3

我有以下代码来查找屏幕尺寸计算屏幕上适合多少文本。

现在我需要知道屏幕上有多少行。我有从上升到下降的文本大小。我需要知道行距的高度。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;
4

3 回答 3

3

对于行距,使用 textView.getLineHeight();

参考: http: //developer.android.com/reference/android/widget/TextView.html#getLineHeight()

于 2014-08-20T05:06:53.897 回答
3

以下将返回推荐的行距

textView.getPaint().getFontSpacing()

您可以通过多种方式获取文本的高度。我更喜欢paint的getTextBounds方法,只需将两个值相加

于 2013-11-12T08:26:18.173 回答
2
Paint.FontMetrics fm = paint.getFontMetrics();
float fullHeight = fm.top - fm.bottom;

据我记得,fm.bottom < 0,因此通过减去你实际上得到

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

这个值比 ascent-descent 大,而且,我猜,它是实际的线大小。

您可以考虑在设置 TextSize 后使用 TextView.getLineHeight() 并在布局完成后优先使用(例如在 OnWindowFocusChanged 中)。

于 2013-04-17T01:40:10.393 回答