【转】Android TextView支持拷贝&粘帖 textIsSelectable
2015-10-03 16:54
369 查看
http://droidwolf.iteye.com/blog/1767800
让TextView支持长按弹出系统自带的拷贝、粘贴功能,发现国内外的论坛提供的解决方法都不怎么理想。多数用editview来模仿,不过实现的效果实在不怎么好。
从android sdk 11起google添加了新api,TextIsSelectable控制TextView是否支持拷贝、粘帖功能,不过这个功能在v11以下则不那么好彩了。
查阅TextView源码发现setTextIsSelectable实际调用的是Editor类的相应方法,而Editor里面控制了拷贝、粘帖功能。顺藤摸瓜通过反射获取到mEditor变量再调用setTextIsSelectable里调用的方法,调出拷贝、粘帖功能。似乎这是个很好的方法。不过很遗憾在系统为4.x的不同设备里测试发现都不成功,不是没有mEditor变量就是mEditor返回null。看来这个Editor在不同的厂商也有不同的实现,google也把这个类标为hide。
又仔细看了看TextView源码,发现setTextIsSelectable顺序调用了以下几个函数
setFocusableInTouchMode(true);
setFocusable(true);
setClickable(true);
setLongClickable(true);
setMovementMethod( ArrowKeyMovementMethod.getInstance());
setText(tv.getText(),BufferType.SPANNABLE );
在v4、v8系统测试顺利调出拷贝、粘帖功能。
让TextView支持长按弹出系统自带的拷贝、粘贴功能,发现国内外的论坛提供的解决方法都不怎么理想。多数用editview来模仿,不过实现的效果实在不怎么好。
从android sdk 11起google添加了新api,TextIsSelectable控制TextView是否支持拷贝、粘帖功能,不过这个功能在v11以下则不那么好彩了。
查阅TextView源码发现setTextIsSelectable实际调用的是Editor类的相应方法,而Editor里面控制了拷贝、粘帖功能。顺藤摸瓜通过反射获取到mEditor变量再调用setTextIsSelectable里调用的方法,调出拷贝、粘帖功能。似乎这是个很好的方法。不过很遗憾在系统为4.x的不同设备里测试发现都不成功,不是没有mEditor变量就是mEditor返回null。看来这个Editor在不同的厂商也有不同的实现,google也把这个类标为hide。
又仔细看了看TextView源码,发现setTextIsSelectable顺序调用了以下几个函数
setFocusableInTouchMode(true);
setFocusable(true);
setClickable(true);
setLongClickable(true);
setMovementMethod( ArrowKeyMovementMethod.getInstance());
setText(tv.getText(),BufferType.SPANNABLE );
在v4、v8系统测试顺利调出拷贝、粘帖功能。
相关文章推荐
- Android API在不同版本系统上的兼容性
- greenDao框架使用心得
- android stdio下的项目目录结构简介
- 转载一篇号称很全面的android stdio使用教程
- Android存储小结
- ROMLite框架(2)——最佳实践
- ORMLite框架(1)——入门用法
- android stdio中的project和module的概念
- AndroidStudio(2 begin --- material design )
- Android Animation无限循环动画
- Android Custom View---Floating Action Button Menu
- Android开发之基础-------------Get请求和Post请求
- 笔记:学习 Android -Services 基础
- Android回弹效果新思考与更加易用的实现
- Android自定义View的实现方法,带你一步步深入了解View(四)
- android stdio简单介绍和使用
- android stdio的快捷键
- android中context的详解
- Android Studio经验积累
- android-----test------模拟来电提醒和短信提醒