TextView支持拷贝&粘帖
让TextView支持长按弹出系统自带的拷贝、粘贴功能,发现国内外的论坛提供的解决方法都不怎么理想。多数用editview来模仿,不过实现的效果实在不怎么好。
从androidsdk11起google添加了新apiTextIsSelectable控制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系统测试顺利调出拷贝、粘帖功能。
相关推荐
ltd00 2020-09-12
waveclouds 2020-09-04
xiaoyuerp 2020-08-17
higheels 2020-06-26
liushun 2019-12-07
azhou 2019-11-04
Poem 2012-08-29
刘涛 2012-05-30
YoungForever 2011-11-01
clayluo 2011-10-13
xiaogeldx 2015-09-06
飞鸿先森 2011-05-06
88590191 2011-03-03
shenzi的天空 2014-05-15
82981634 2012-03-03
liuxiaohua 2019-06-28
周游列国之仕子 2019-06-28