代码如下:

class LineContent inplements Runnable
{
private TextView mTarget;
public LineContent(TextView target)
{
mTarget = target;
}
public void run()
{
GetEachLineContent();
}
private void GetEachLineContent()
{
//得到TextView的布局
Layout layout = mTarget.getLayout();
//得到TextView显示有多少行
int lines = mTarget.getLineCount();
//为了转换String 到 StringBuilder
StringBuilder SrcStr = new StringBuilder(mTarget.getText().toString());
for(int i = 0; i < lines ; i++)
{
//使用getLineStart 和 getLineEnd 得到指定行的开始和结束的坐标,坐标范围是SrcStr整个字符串范围内。
String lineStr = SrcStr.subSequence(layout.getLineStart(i),Layout.getLineEnd(i)).toString();
Log.d("text",lineStr);
}
}
}
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
RelativeLayout relativeLayout = new RelativeLayout(this);
TextView textview = new TextView(this);
String string = new String("fsda sf-\n>123sdfasdf\n1232132\n1321");
textView.setText(string);
relativeLayout.addView(textView);
setContentView(relativeLayout);
textView.post(new LineContent(textView));
}

解释:

1.为什么要用post方法来做?

原因1:  因为getLineCount()要返回正确的行数,必须是TextView已经成功绘画到屏幕上。否则我们可以试验不用post直接在oncreate调用,getLineCount就会返回0。

原因2: getLineStart() 和 getLineEnd() 这两个函数是得到已经绘画在屏幕上TextView中的行和尾的坐标(在整个TextView中字符串的范围内),所以如果TextView

还没有绘画到屏幕上,我们怎么可能能得到每行的开始和结束下标。

(因为字体大小,布局方式,换行符(\n),都会影响每行的内容,所以行数多少和开始结束下标,都必须等到TextView已经正确显示在屏幕上)。

获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)相关推荐

  1. python怎么读文件里的某一行-Python如何获取文件指定行的内容

    linecache, 可以用它方便地获取某一文件某一行的内容.而且它也被 traceback 模块用来获取相关源码信息来展示. 用法很简单: >>> import linecache ...

  2. 获取textview行数

    如果我们想获取TextView内容的行数,TextView没有提供现成的api供我们使用,需要我们自己获取. 这里提供一个间接的方法,通过StaticLayout来间接获取行数. 下面是代码: pub ...

  3. android textview 获得行数,android中提前获取TextView行数

    一般情况下,TextView的行数要等到其布局完成后才能获取到,否则如果直接调用textView.getLineCount()函数获取到的结果只会为0,那能不能提前获取到TextView的行数呢,当然 ...

  4. matlab中读文件的行数_[转载]MATLAB中获取大型文本文件行数方法研究(转)

    在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进行一定的处理.由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一 ...

  5. 获取GitHub上远程分支内容

    第一,clone 1>运行命令行,将目录切换到你目的地址(你想把项目获取到你本地的什么地方). 如下图: 2>登录GitHub,找到要clone的项目,复制其URL 如下图所示: 3> ...

  6. textview多行ellipsize=end不显示省略号的解决方法(一)

    2019独角兽企业重金招聘Python工程师标准>>> textview多行设置ellipsize="end"并不显示省略号.这是android4.0以下系统的b ...

  7. python获取excel整行数据如何保存到新的工作簿中_如何使用python将大量数据导出到Excel中的小技巧之一...

    如何使用python将大量数据导出到Excel中的小技巧 (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢 ...

  8. listview 的首行固定内容标题且加粗显示(类似于表格的首行)的实现方法

    项目中有需求,将 listview 的首行固定内容标题(类似于表格的首行),效果如下: 实现方式如下: Adapter 的 getCount 中返回比数据集合多一行: @Overridepublic ...

  9. python pandas读取csv文件指定行_python pandas获取csv指定行 列的操作方法

    python pandas获取csv指定行 列的操作方法 pandas获取csv指定行,列 house_info = pd.read_csv('house_info.csv') 1:取行的操作: ho ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、形状配置)实战
  2. 赠书:Redis 深度历险:核心原理与应用实践
  3. 黄金法则之《终身学习》
  4. 更换密码之后连不上数据库
  5. ubuntu修改ssh服务的端口号
  6. 什么是中台业务架构?
  7. WPF4文字模糊不清晰、边框线条粗细不一致的解决方法
  8. activity 生命周期_Activity 源码解析
  9. datagridview单元格合并居中_系统地学习Excel第17课,设置单元格格式
  10. 安装Nagios监控软件
  11. 记录用友ERP二次开发全过程(转载)
  12. Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1696 1024)
  13. MVC仓储执行存储过程报错“未提供该参数”
  14. shell基础之更改IP
  15. 合并多个js,css文件的方法 - 在服务端合并和压缩JavaScript和CSS文件
  16. Linux与网络服务(零)从零开始聊聊Linux相关概念(科普向)
  17. 数字经济发展指标体系和测算(含互联网宽带、电话普及率等多指标 内附原始数据) 2011-2020年
  18. 宝宝起名和姓名打分源码(PHP和JAVA版)
  19. Xsens MVN Analyze高精度惯性动作捕捉系统Link版
  20. 怎样免费将Word导出为PDF格式?

热门文章

  1. Linux中的 real user, effective user, saved set user 三种用户ID
  2. 关于Excel中的F2键(知道了,会对Excel的操作非常方便)。
  3. 【Oracle】ORA-55610: Invalid DDL statement on history-tracked table
  4. 【解决方案 二】---设置mysql5.7编码集为utf8mb4
  5. Error, some other host already uses address 192.168.0.202错误解决方法
  6. Linux下安装Docker,报错docker: unrecognized service的两种解决方案
  7. 提交代码出现 Push to origin/master was rejected 错误解决方法
  8. 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
  9. AngularJS app.run()文档?
  10. case / switch语句的Python等价物是什么? [重复]