我想了解实际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 ?
答案 0 :(得分:0)
当渲染视图时,窗口会计算其位置和高度,即使再添加一行,它也将保持为58.Line height对应于绘制文本的高度,而textviews height对应于渲染视图的高度。玩它:尝试在dp中应用textview的高度,如30,然后在换行内容中匹配parent并查看logcat。让我知道它是否有效