【问题标题】:How to get linespacing of a TextView?如何获取 TextView 的行距?
【发布时间】:2014-03-07 07:10:42
【问题描述】:
有什么方法可以在Android 中获得TextView 的行距?我尝试找到Paint 的fontMetrics 的TextView 并这样做:
tv1.getPaint().getFontMetrics(pfm);
float fontTop = pfm.top;
float fontBottom = pfm.bottom;
System.out.println("Line Space >> " + (fontBottom - fontTop));
但在我更改TextView 的字体大小之前,结果似乎是相同的。那么如何获得TextView 的行距?
【问题讨论】:
标签:
android
textview
fontmetrics
【解决方案1】:
TextView 的行距是
textView.getPaint().getFontSpacing() * textView.getLineSpacingMultiplier() + textView.getLineSpacingExtra();
注意 getLineSpacingMultiplier() 和 getLineSpacingExtra() 方法自 API 16+ 起可用。
【解决方案2】:
getLineSpacingExtra ();获取行距额外空间
tv1.getLineSpacingExtra ()
textView.setLineSpacing() 或来自 xml 你可以使用android:lineSpacingExtra 来设置额外的空间。
【解决方案3】:
try {
Field mSpacingAddField = TextView.class.getDeclaredField("mSpacingAdd");
Field mSpacingMultField = TextView.class.getDeclaredField("mSpacingMult");
mSpacingAddField.setAccessible(true);
mSpacingMultField.setAccessible(true);
mSpacingAdd = mSpacingAddField.getFloat(textView);
mSpacingMult = mSpacingMultField.getFloat(textView);
} catch (Exception e) {
e.printStackTrace();
}