博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置EditText光标位置
阅读量:5914 次
发布时间:2019-06-19

本文共 1504 字,大约阅读时间需要 5 分钟。

转载请注明出处。

Android中有很多可编辑的弹出框,其中有些是让我们来修改其中的字符,这时光标位置定位在哪里呢?

刚刚解了一个bug是关于这个光标的位置的,似乎Android原生中这种情况是把光标定位到字符串的最前面。需求是将光标定位到字符的最后面。

修改的地方是TextView这个控件,因为EditText也是继承了TextView。在setText方法中有:

1  private void setText(CharSequence text, BufferType type, 2                          boolean notifyBefore, int oldlen) { 3 …… 4         if (text instanceof Spannable) { 5             Spannable sp = (Spannable) text; 6  7             …… 8             if (mMovement != null) { 9                 mMovement.initialize(this, (Spannable) text);10         //文本是不是Editable的。11         if(this instanceof Editable)12                      //设定光标位置13                      Selection.setSelection((Spannable)text, text.length());14 15                ……16     }

从红色代码中可以看出,google是要光标处在缺省文本的末端,但是,log发现 (this instanceof Editable)非真,也就是说Selection.setSelection((Spannable)text, text.length());并不会被执行。

1    Log.d("TextView", "(type == BufferType.EDITABLE)="+(type == BufferType.EDITABLE));2    if(type == BufferType.EDITABLE){3          Log.d("TextView","Format text.Set cursor to the end ");4          Selection.setSelection((Spannable)text, text.length());5    }

这个样修改后即可。

 

在编写应用的时候,如果我们要将光标定位到某个位置,可以采用下面的方法:

1 CharSequence text = editText.getText();2 //Debug.asserts(text instanceof Spannable);3 if (text instanceof Spannable) {4     Spannable spanText = (Spannable)text;5     Selection.setSelection(spanText, text.length());6 }

其中红色标记的代码为你想要设置的位置,此处是设置到文本末尾。

 

转载于:https://www.cnblogs.com/nanhuchongzi/archive/2012/04/17/2444451.html

你可能感兴趣的文章
java对象拷贝
查看>>
LAMP_配置静态文件缓存
查看>>
Java 的基本数据类型
查看>>
网站页面性能优化的34条黄金守则(网上到处都有了,还是要转一下)
查看>>
无法在模块路径中找到主题引擎:“murrine”
查看>>
[转]jetbrains系产品字体设置技巧
查看>>
selenium3打不开火狐浏览器的解决方法
查看>>
C#forUnity快速入门(连载13)-C#结构体
查看>>
我的友情链接
查看>>
Ubuntu添加永久DNS配置
查看>>
hash 散列生成目录
查看>>
开通博客的第一天
查看>>
密码权限管理
查看>>
Hive(一):Hive的安装部署
查看>>
Tomcat9 多端口 多项目
查看>>
raid+lvm+quota 实现流程
查看>>
linux tomcat配置https
查看>>
史上最牛最详细的Linux教程 不看后悔终生!
查看>>
极快的正整数排序函数
查看>>
mysql数据库sleep进程过多的处理办法
查看>>