有些时候TextView里面的文字太多不要全部显示出来,只需要在某些特定的时候显示出来。
比如在xml文件中设置android:maxLines="2",输入的数据最多只能开到2行,多余的数据需要重新设置maxLine的值后才能显示。
TextView设置完setMaxLines后,通过TextView.getHeight方法获取的是当前行数的高度,而非文字完全显示的高度。
如果需要得到全部的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;
}
自己做了一个Demo:
package com.example.textviewdemo;
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView textView,lines;
Button btn;
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout = (LinearLayout) findViewById(R.id.linearlayout);
textView = (TextView) findViewById(R.id.show);
textView.setText("aaaaaaaaaaaaaaaassssssssssssssssssssss" +
"bbbbbbbbbbbbbbbgggggggggggggggggggg" +
"dddddddddddddddhhhhhhhhhhhhhhhhhhhh" +
"tttttttttttttttttoooooooooooooooooo");
btn = (Button) findViewById(R.id.btn);
lines = (TextView) findViewById(R.id.lines);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
textView.setMaxLines(9);
//lines.setText(String.valueOf(textView.getHeight()));//第一次点击52,第二次点击101
lines.setText(String.valueOf(getTextViewHeight(textView)));//101
}
});
linearLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//lines.setText(String.valueOf(textView.getHeight()));//52
lines.setText(String.valueOf(getTextViewHeight(textView)));//101
}
});
}
/**
* 获取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;
}
}
一:设置为:lines.setText(String.valueOf(getTextViewHeight(textView)));
初始界面:
点击屏幕后:
点击显示按钮:
二:设置为:lines.setText(String.valueOf(textView.getHeight()));
初始界面和第一次相同:
点击屏幕后:
点击显示按钮后:
再次点击屏幕或者显示按钮后: