获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
2015-05-12 17:02
537 查看
代码如下:
解释:
1.为什么要用post方法来做?
原因1: 因为getLineCount()要返回正确的行数,必须是TextView已经成功绘画到屏幕上。否则我们可以试验不用post直接在oncreate调用,getLineCount就会返回0。
原因2: getLineStart() 和 getLineEnd() 这两个函数是得到已经绘画在屏幕上TextView中的行和尾的坐标(在整个TextView中字符串的范围内),所以如果TextView
还没有绘画到屏幕上,我们怎么可能能得到每行的开始和结束下标。
(因为字体大小,布局方式,换行符(\n),都会影响每行的内容,所以行数多少和开始结束下标,都必须等到TextView已经正确显示在屏幕上)。
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已经正确显示在屏幕上)。
相关文章推荐
- Android获取TextView行数getLineCount()返回0
- 关于TextView getLineCount问题
- android 关于TextView getLineCount() 获得的值始终为0问题
- android TextView getlinecount返回0
- 关于Textview的getLineCount返回0
- abdroid关于TextView.getLineCount() 为0
- Textview的getLineCount返回0
- TextView Get Line Count Return 0?
- 获取自定义item的ListView里的View中的内容,如Text
- android中TextView内容显示过长,省略内容问题
- JS获取input标签的text值、JS获取下拉框内容、input控制只能输入数字等问题汇总
- Android之ViewPager.getChildCount()无限自增问题解析
- 解决MultipartEntity无法获取内容数据问题:Multipart form entity does not implement #getContent()
- 使用 m_pRecordset->GetRecordCount();获取记录数不准确的问题总结
- 基础向:recyclerView 内嵌 edittext checkbox 焦点获取、数据紊乱以及数据保存问题
- TextView设置ellipsize maxEms和singleLine 限制字符个数失效问题
- TextView内容不换行问题
- file_get_contents获取json内容处理失败的问题
- TextView的text内容包含双引号的问题
- Android TextView 设置行间距的问题 (setLineSpacing ,lineSpacingExtra, lineSpacingMultiplier)