TextView長按復(fù)制的實(shí)現(xiàn)方法(總結(jié))
有這么一個(gè)需求,用戶在瀏覽文本信息時(shí)希望長按信息就能彈出復(fù)制的選項(xiàng)方便保存或者在別的頁面使用這些信息。類似的,就像長按WebView或者EditText的內(nèi)容就自動(dòng)彈出復(fù)制選項(xiàng)。
這里面主要是2個(gè)特點(diǎn):
1、用戶只能瀏覽文本信息而不能編輯這些文本信息;
2、用戶對(duì)著文本信息長時(shí)間點(diǎn)按可以彈出”復(fù)制” 選項(xiàng)實(shí)現(xiàn)復(fù)制;
網(wǎng)上有好多種方法可實(shí)現(xiàn),也比較零散, 此處做個(gè)小結(jié),希望有所幫助。
1、通過繼承EditText,自定義TextView
public class NewTextView extends EditText { public NewTextView(Context context) { super(context); // TODO Auto-generated constructor stub } public NewTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public NewTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } @Override protected boolean getDefaultEditable() {//禁止EditText被編輯 return false; } }
上面很關(guān)鍵的一個(gè)方法是getDefaultEditable(), return false;即禁止EditText被編輯,變成了不可編輯的EditText,但同時(shí)具有EditText的長按復(fù)制功能。更進(jìn)一步的,如果查看EditText源碼, 就發(fā)現(xiàn)源碼中有一個(gè)方法 protected void onCreateContextMenu(ContextMenu menu)
控制了EditText長按彈出的上下文菜單,可以自定義這個(gè)方法且實(shí)現(xiàn)為空protected void onCreateContextMenu(ContextMenu menu){ }
然后在onTouchEvent事件中攔截處理自定義的點(diǎn)按事件,彈出自定義的菜單。
原理如上, 更直白簡單的方法是直接在xml中使用一個(gè)EditText,并且將屬性設(shè)置為 android:editable=”false” .
2、使用OnLongClickListener
直接使用TextView,然后在代碼里給TextView添加OnLongClickListener事件,長按時(shí)彈出自定義 “復(fù)制” 菜單(比如結(jié)合 PopupWindow做彈出菜單)。點(diǎn)擊”復(fù)制” 就去獲取TextView的內(nèi)容。
當(dāng)然, 這里只是獲取內(nèi)容,如何將內(nèi)容放入粘貼管理器還需要一個(gè)ClipboardManager 對(duì)象。它負(fù)責(zé)管理復(fù)制后粘貼的這件事。
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(content.trim()); //將內(nèi)容放入粘貼管理器,在別的地方長按選擇"粘貼"即可 cm.getText();//獲取粘貼信息
3、使用setTextIsSelectable()方法
代碼中直接對(duì)TextView使用setTextIsSelectable()方法,將TextView設(shè)置成可點(diǎn)按選擇的即可。
TextView tv = new TextView(context); tv.setTextIsSelectable(true);
上面就是常見的長按文本信息彈出”復(fù)制”菜單的一些方法小結(jié)了,希望對(duì)大家有所幫助.
以上這篇TextView長按復(fù)制的實(shí)現(xiàn)方法(總結(jié))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
怎么發(fā)布打包并發(fā)布自己的Android應(yīng)用(APP)
前面我為大家講的都是關(guān)于Android開發(fā)方面的知識(shí)點(diǎn)和技術(shù),不少朋友可能會(huì)感到疑惑--究竟我該怎么打包、發(fā)布自己開發(fā)的APP,怎樣將我的APP放到網(wǎng)上工別人下載,怎樣保證我的APP安全及版權(quán)問題呢2013-11-11詳解Android中Activity的四大啟動(dòng)模式實(shí)驗(yàn)簡述
本篇文章主要介紹了Android中Activity的四大啟動(dòng)模式實(shí)驗(yàn)簡述,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12jenkins 遠(yuǎn)程構(gòu)建Android的過程詳解
這篇文章主要介紹了jenkins 遠(yuǎn)程構(gòu)建Android的過程詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09Android 大文件切割與合并的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 大文件切割與合并,實(shí)現(xiàn)了很多發(fā)文件和視頻的切割,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)
這篇文章主要為大家介紹了Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Android Studio 實(shí)現(xiàn)將support庫改成Androidx
這篇文章主要介紹了Android Studio 實(shí)現(xiàn)將support庫改成Androidx,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04