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/Free-Thinker/p/4351067.html

android 设置EditText光标位置相关推荐

  1. Android 设置EditText光标位置(转)

    Android 设置EditText光标位置 最后 CharSequence text = edtTxt_my_account_edit_nickname.getText();if (text ins ...

  2. Android 设置EditText光标Cursor颜色及粗细

    2019独角兽企业重金招聘Python工程师标准>>> 在android的输入框里,如果要修改光标的颜色及粗细步骤如下两步即可搞定: 1.在资源文件drawable下新建一个光标控制 ...

  3. 设置EditText光标颜色

    本文翻译自:Set EditText cursor color I am having this issue where I am using the Android's Holo theme on ...

  4. android edittext背景颜色,Android 设置 EditText 背景颜色、背景图片

    Android 设置 EditText 背景颜色mView.findViewById(R.id.editText).setBackgroundResource(R.color.caution); An ...

  5. android EditText光标位置,光标样式,EditText限制输入内容,软键盘遮挡的EditText,搜索框,限制输入表情

    显示在软键盘上 android:windowSoftInputMode="adjustPan|stateHidden" 1.光标位置 homesosoedit.setSelecti ...

  6. 控制edittext光标位置

    在写输入法回退键的时候光标不跟随文字走很头疼,最近在网上找到一篇文章说这个问题,给出了解决方案,很久以前看的了,地址找不到了,深表歉意.方法如下 /** * * @描述 : 控制光标位置在最末端 * ...

  7. contentEditable,window.getSelection详解---可编辑div,容器,设置/获取光标位置,光标处插入内容及光标的操作

    这周碰到一个东西,contentEditable ,它是用来指定一个元素是否是可编辑的,这也是富文本编辑器实现的底层支持,网上关于这部分东西的资料比较少或者不全,所以我来整理下关于这个属性,和可编辑区 ...

  8. Android设置EditText键盘输入字母和数字

    1.布局中设置: android:inputType="number" android:digits="0123456789abcdefghijklmnopqrstuvw ...

  9. Android设置EditText输入类型:setInputType()方法和android:inputType属性

    需求: 本次需求是做密码输入的隐藏.显示. 过程: 时间太久,很多属性已经记不太清楚了,比较纠结,所以整合下属性. 结果: 布局文件------------------------------ < ...

最新文章

  1. shell编程系列7--shell中常用的工具find、locate、which、whereis
  2. 架设自己的WebDAV服务器作为AutoCAD WS的数据存储
  3. 一个基于Spring极度简单的Restful API工具
  4. 删除U盘作为启动盘的隐藏启动分区
  5. 关于完善Github repo里文档的规范做法
  6. python的基础命令_Python必学之命令行常用的命令
  7. android 获取sd卡目录失败_树莓派对SD卡的大小,速度有哪些要求?
  8. vue ---- 计算属性
  9. Linux学习总结(八)-磁盘格式化,挂载,swap扩容
  10. WinMM.dll 函数汇总
  11. Python实现中文转化为对应的拼音以及拼音转化为相应的中文
  12. C语言 fwrite 覆盖文件原始数据问题
  13. Android 13运行时权限变更一览
  14. 【自学笔记】前端面试题之CSS(部分HTML)
  15. 固态硬盘的计算机需要进行磁盘碎片整理吗,SSD固态硬盘需要碎片整理吗 固态盘切忌磁盘碎片整理...
  16. matlab摩托车刹车问题,安全骑行篇,摩托车刹车的基本知识与技巧!
  17. 软件测试工程师春招薪资20K+,BAT校招薪资表出炉!学弟学妹们看齐...
  18. 2021年吴文俊人工智能科学技术奖公布 华为云田奇获杰出贡献奖
  19. Stata12 下载和安装
  20. VUE打包目录自定义

热门文章

  1. ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
  2. sharepoint html 编辑器 ,使用 Web 部件自定义页面简介
  3. 碎片︱R语言与深度学习
  4. Java面试的基础题20190301
  5. js中的substr和substring
  6. centos7下使用rpm包安装clickhouse
  7. apache 配置 中英
  8. Linux常用的基本命令13
  9. android中当内容超出一页,滚动条滚动到某一个位置的另一个思路
  10. 精确的力量:完美SNES仿真器的一个3GHz追求