如何TextView高度实际测量?

时间:2016-09-17 06:49:33

标签: android textview

我想了解实际textView最终身高的计算方式。

我尝试了以下TextView测量高度的方法。

public static int getHeight(Context context, String text, int textSize, int deviceWidth) {
        EmojiTextView textView = new EmojiTextView(context);
        textView.setText(text);
        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
        int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(deviceWidth, View.MeasureSpec.AT_MOST);
        int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
        textView.measure(widthMeasureSpec, heightMeasureSpec);
        float lineSpacingMulti = textView.getLineSpacingMultiplier();
        float lineSpacingExtra = textView.getLineSpacingExtra();
        float lineHeight = textView.getLineHeight();
        Log.d(TAG, "getHeight: lineSpacingMulti" + lineSpacingMulti + ":lineSpacingExtra:" + lineSpacingExtra + ":lineHeight:" + lineHeight);
        return textView.getMeasuredHeight();
    }

我得到了以下logcat结果:

09-17 12:11:18.974 25729-25729/?: getHeight: lineSpacingMulti1.0:lineSpacingExtra:0.0:lineHeight:43.0

09-17 12:11:18.973 25729-25729/?: calculateDynamicTextSize: ME Height 58

所以如果行高是43 行间距乘数是1 而不是为什么度量文本高度为58

1 个答案:

答案 0 :(得分:0)

当渲染视图时,窗口会计算其位置和高度,即使再添加一行,它也将保持为58.Line height对应于绘制文本的高度,而textviews height对应于渲染视图的高度。玩它:尝试在dp中应用textview的高度,如30,然后在换行内容中匹配parent并查看logcat。让我知道它是否有效