博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selection
阅读量:7222 次
发布时间:2019-06-29

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

  • 转自:
  • Selection 这个完全是一个工具类, 是关于区间选取的工具类, 自有的方法都是静态的. 来了兴致就把所有方法都测试了一下, 又要熬夜了. 测试是在一个继承EditText 的子类  onTouchEvent 方法里面进行的. 算是一个总结了.
  • text 实参是 getEditableText(), layout 实参是 getLayout() 
  • 选中区域的方法:
  • Selection.extendDown(Spannable text ,Layout layout); //当前光标的坐标, 选中到下一行的(X轴)位置

           1 2 3 4光标 5 6 7 8 9

           1 2 3 4       5 6 7 8 9

  • Selection.extendUp (Spannable text ,Layout layout); //当前光标的坐标, 选中到上一行的(X轴)位置

           1 2 3 4       5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9

  • Selection.extendLeft (Spannable text ,Layout layout); //当前光标的坐标, 选中到x-1的位置

           1 2 3   4   5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9

  • Selection.extendRight (Spannable text ,Layout layout); //当前光标的坐标, 选中到x+1的位置

           1 2 3 4       5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9

  • Selection.extendToLeftEdge (Spannable text ,Layout layout); //当前光标的坐标, 选中到同行的最左边的位置

           1 2 3 4       5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9

  • Selection.extendToRightEdge (Spannable text ,Layout layout);//当前光标的坐标, 选中到同行的最右边的位置

           1 2 3 4       5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9

 


 

  • 跳转光标的方法:
  • Selection.moveDown (Spannable text ,Layout layout);当前光标的坐标, 跳转到下一行的(X轴)的位置

           1 2 3 4 原光标 5 6 7 8 9

           1 2 3 4 新光标 5 6 7 8 9

  • 还有moveUp, moveLeft,  moveToLeftEdge等, 结合上面其他方法的说明, 大家应该都懂得! 这里省略了.

 

 


  • 指定位置的方法, 全选和取消:
  • Selection.setSelection(Spannable text, int index); //当前光标的坐标, 跳转到索引为index 的位置(索引从0开始), 注意不是moveSelection.

          如, Selection.setSelection(getEditableText(), 5);

           1 2 3 4 原光标 5新光标 6 7 8 9

           1 2 3 4           5          6 7 8 9

  • Selection. extendSelection( Spannable text , int index );  //当前光标的坐标, 选中到索引为 index的位置( 索引从0开始 )

          如, Selection.extendSelection(getEditableText(), 5);

           1 2 3 4 原光标 5 6 7 8 9

           1 2 3 4           5 6 7 8 9

  • Selection.setSelection(Spannable text, int start, int stop)     //选中从索引start 到索引stop 的区域

          如, Selection.setSelection(getEditableText(), 5, 9);

           1 2 3 4  5 6 7 8 9

           1 2 3 4  5 6 7 8 9

  • Selection.selectAll(Spannable text);        //全选

           1 2 3 4 5 6 7 8 9

           1 2 3 4 5 6 7 8 9

  • Selection.removeSelection(Spannable text);      //取消选中状态, 光标坐标重置到最前面

           1 2 3 4       5 6 7 8 9             ====>       光标1 2 3 4 5 6 7 8 9

           1 2 3 4光标 5 6 7 8 9                                     1 2 3 4 5 6 7 8 9

 

 


  • int Selection.getSelectionEnd(CharSequence text)      //text 实参是 getEditableText()
  1. 如果没有选中区域,有光标, 返回光标所在的索引;
  2. 如果有选中区域, 返回区域的结束索引;
  3. 如果没有选中区域和光标, 返回-1.        
  • int Selection.getSelectionStart(CharSequence text)     //text 实参是 getEditableText()
  1. 没有选中区域,有光标, 返回光标所在的索引;
  2. 如果有选中区域, 返回区域的开始索引;
  3. 如果没有选中区域和光标, 返回-1.

     这两个方法EditText 也有的.  如何获取选中的文字呢? 靠的就是EditText 的这两个方法. 取一个开始索引start 和 结束索引 end, 判断它们是否相同, 不相同证明有文字被选中, 选中文字 = mEditText.getText().subSequence(start, end);

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/nanhuchongzi/archive/2012/04/12/2443555.html

你可能感兴趣的文章
SSH 密钥登录linux
查看>>
你必须掌握的 21 个 Java 核心技术!
查看>>
告诉你WHT中文站是什么?
查看>>
4、Juniper SSG520 PPTP映射到ROS后MAC无法连接解决方法
查看>>
利用批处理文件来建立一个记录3389登陆者信息
查看>>
Linux 系统下双机HA的实现
查看>>
02_swarm mode key concepts
查看>>
Eclipse打包插件Fat Jar 解压打包
查看>>
Apache Shiro 使用手册
查看>>
CentOS mini 6.5 安装DB2 Express-C 问题处理记录
查看>>
DirectByteBuffer
查看>>
Docker Compose文件详解 V2
查看>>
Memcached的原理与应用(未完)
查看>>
基于 Confluence 6 数据中心的 SAML 单点登录设置你的身份提供者
查看>>
mysql总结
查看>>
Navicat for MySQL版本更新至v11.2.12,修复多项问题|附下载
查看>>
整理 JAVA中的IO流 (字符流和字节流两个大类)
查看>>
uefi与win8 (根据网络资料整理)
查看>>
Eclipse优化
查看>>
Log4j tutorial with Tomcat examples
查看>>