TextView设置完setMaxLines后,通过TextView.getHeight方法获取的是当前行数的高度,而非文字完全显示的高度。
以下左边的图是《选择》这首诗一共只显示5行,右侧的图片中可以看到5行文字的高度,但是此时获取不到完整显示时TextView的高度
textView.setMaxLines(5);
textView.getHeight(); // 125
获取TextView的完整高度,核心代码
private int getTextViewHeight(TextView pTextView) {
Layout layout = pTextView.getLayout();
int desired = layout.getLineTop(pTextView.getLineCount());
int padding = pTextView.getCompoundPaddingTop() + pTextView.getCompoundPaddingBottom();
return desired + padding;
}
完整代码
public class MainActivity extends Activity {
private static final String value = "选 择 汪国真\n你的路\n已经走了很长很长\n走了很长"
+ "\n可还是看不到风光\n你的心很苦\n很彷徨\n没有风帆的船\n不比死了强\n没有罗盘的风帆