获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
来源:互联网 发布:东软医保软件收费 编辑:程序博客网 时间:2024/05/17 07:34
代码如下:
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已经正确显示在屏幕上)。
1 0
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
- Android TextView getLineCount() 为0问题
- 获取textview每行的内容
- TextView获取每行的内容
- Textview.getLineCount等于0的问题
- Android获取TextView行数方法getLineCount()返回值为0
- android 关于TextView getLineCount() 获得的值始终为0问题
- Textview的getLineCount返回0
- abdroid关于TextView.getLineCount() 为0
- TextView中getLineCount()返回为0
- Android获取TextView行数getLineCount()返回0
- 关于TextView getLineCount问题
- 关于Textview的getLineCount返回0
- android 设置TextView多行和单行各自显示不同的Gravity样式;textview.getLineCount()值为0解决
- android TextView 每行字数显示的问题
- 动态设置TextView的对齐方式以及getLineCount的使用
- 获取TextView的内容高度
- 获取UITableView每行中不同的UITextField输入的内容
- shell编程学习记录
- MFC文档视图(二):标准消息
- PHP CURL curl_setopt 参数
- OFBIZ 分页代码
- UVM平台搭建
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
- GitHub使用教程for Eclipse
- 安装Android Studio出现的问题 SDK无法加载的问题
- iOS webView和JS简单交互处理
- Android WebView Long Press长按保存图片到手机
- poj 2398 Toy Storage
- CSS3 HTML
- [leetcode] Min Stack
- Android4.2.2下Stagefright多媒体架构中的A31的OMX插件和Codec组件