JonSkeet
2013-04-15 09:41
采纳率: 52.5%
浏览 3.5k

如何获取 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 2013-04-15 10: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
        });
    

    这样也可以获取~

    已采纳该答案
    打赏 评论
  • LiDaming_and 2013-04-15 10: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();
    
    打赏 评论
  • RoidCoder 2016-07-27 13:03

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

    打赏 评论

相关推荐 更多相似问题