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 经验证,此方法能达到要求。
接近 2 年之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
编写一个程序,一行行地读取输入行,直到到大文件尾。算出每行输入行的长度,然后把最长的行打印出来。假定所有的输入行均不超过1000个字符。
首先,一行行地读取输入行可以使用gets函数。gets函数从标准输入流中读取字符串,知道读到换行符或者EOF时停止,并将读取结果存放在buffer指针所指向的字符数组中。      接下来,就要考虑如何保存最长行并把它输出的问题了。这里可以先算出每一行的长度,如果长度最长,就将该字符串拷贝也就是保存起来,以便输出: #include #include #include #define M
windows2000 DOS命令行提示“输入行太长”的解决方法
windows2000 DOS命令行提示“输入行太长”的解决方法
windows 写bat 文件,行太长处理
D:\caffe\caffe-master\Build\x64\Release\classification.exe ^   D:\caffe\caffe-master\models\bvlc_reference_caffenet\deploy.prototxt ^   D:\caffe\caffe-master\models\bvlc_reference_caffenet\bvlc_refe
编译的时候提示:输入行太长
http://www.52rd.com/bbs/Archive_Thread.asp?SID=208957&TID=3 编译的时候提示:输入行太长 1、路径太深VS会报错,放到根目录,或者做映射,或者减少项目名目录的长度。 2、可以去C:\WINDOWS\system32\复制cmd.exe到工程本地,再用它来编译。这样应该就不会有这个错误了。 http://forums.codeli
windows2000+DOS命令行提示“输入行太长”的解决方法
windows2000+DOS命令行提示“输入行太长”的解决方法
C圣经---删除输入行末尾的空格以及制表符,并删除完全是空格的行
源自 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行   getline函数,能够在读入文本行时返回该行的长度,而在遇到文件结束符时返回0 由于0不是有效的行长度,因此可以作为标志文件结束的标志. 每一行,至少包括一个字符,只包含换行符的行,其长度为1     #include //#include #define MAXLINE 1000 int g
exercise1-18 编写一个程序,删除每个输入行末尾的空格及制表符,删除完全是空格的行
编程练习如题 解决思路:用fgets读入完整的一行,从字符串末尾进行字符判断,直至第一个不是space(默认space指’ ‘,’\t’, ‘\n’)的字符结束。#include <stdio.h> #include <string.h> #include <ctype.h>#define BUFFSIZE 4096int main(void) { FILE *fin, *fout;
kettle的job中执行每行
etl kettle 进阶学习教程 权威 关于循环的示例
《C和指针》第一章代码 - 读取修改文本输出程序
这个程序从标准输入中读取输入行并在标准输出中打印这些输入行 每个输入行后面一行是该行内容的一部分 输入的第一行是一串列标号,串的最后一个以负数结尾 这些列标号成对出现,说明需要打印的输入行的范围
编写一个程序,一行行地读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,你可以假定所有的输入行均不超过1000个字符
#include #include #include #include #define MAX 1000 int main() { char s[MAX]; char str[MAX]; int n1,n2 = -1; while( gets(str)!=NULL ) { n1 = strlen(str); printf("%d\n",