2 jonskeet JonSkeet 于 2013.04.15 17:41 提问

如何获取 TextView 中输入行的最大数?

如何获取 TextView 中输入行的最大数?

DisplayMetrics metrics = new DisplayMetrics ();
getWindowManager (). getDefaultDisplay (). getMetrics (metrics);
float width = metrics.widthPixels;
float height = metrics.heightPixels;

int lines = (int) (height / textView.getLineHeight ());

System.out.println (lines);

3个回答

franzhong
franzhong   2013.04.15 18:26
已采纳
    TextView tv1 = (TextView) findViewById(R.id.tv1);
    tv1.setText("abcd\nhello\nworld123\n333333");
    tv1.post(new Runnable() {
        @Override
        public void run() {
            int lineCount    = tv1.getLineCount();
            Toast.makeText(MainActivity.this, "行数为:"+lineCount, Toast.LENGTH_LONG).show();
        }//行数为4
    });

这样也可以获取~

qq_28850713
qq_28850713 经验证,此方法能达到要求。
一年多之前 回复
LiDaming_and
LiDaming_and   2013.04.15 18:16
textview.getLineCount()

请参考:documentation
看下这个方法能解决你的问题吗:

Paint paint = new Paint();
Rect bounds = new Rect();

int text_height = 0;
int text_width = 0;

paint.setTypeface(Typeface.DEFAULT);// your preference here
paint.setTextSize(25);// have this the same as your text size

String text = "Some random text";

paint.getTextBounds(text, 0, text.length(), bounds);

text_height =  bounds.height();
text_width =  bounds.width();
oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.07.27 21:03

注意:tv1.getLineCount()的调用不能直接在 tv1.setText() 之后,这样返回的结果会是0,
可以在setText之后使用Handler发送一个消息,然后在Handler中去调用tv1.getLineCount()
这样才能获取到值

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!