如何定位android系统中光标的位置

 我来答
百度网友a180553
推荐于2016-09-10 · TA获得超过2640个赞
知道小有建树答主
回答量:1405
采纳率:73%
帮助的人:484万
展开全部
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 }
其中红色标记的代码为你想要设置的位置,此处是设置到文本末尾。
lqh810
推荐于2017-12-16 · TA获得超过391个赞
知道小有建树答主
回答量:140
采纳率:33%
帮助的人:151万
展开全部
你说的的是EditText的光标?mEditText1.getSelectionStart();这个是EditText选择的起始位置,还有个End,是终止位置。如果没有选择内容,则这两个返回值相等,也就是光标的位置,最小值0
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疾风野野
2013-01-22 · TA获得超过584个赞
知道小有建树答主
回答量:1560
采纳率:50%
帮助的人:780万
展开全部
安卓系统里有什么光标???看不懂!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式