我想了解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?
,如果你真的想知道看到'TextView的#onMeasure'方法,但是你需要什麼它實際上是? – pskink
@pskink我正在測量文本的頂部和底部填充。所以如果我在LinearLayout中放置兩個textView或者一個textView和一個ImageView,它們之間的空間應該看起來相同。 – Kaushlendra
請參閱'TextView#setIncludeFontPadding',但爲什麼不使用一個'TextView'而不是在'LinearLayout'中合併兩個或更多? – pskink