TextView長按復(fù)制的實現(xiàn)方法(總結(jié))
有這么一個需求,用戶在瀏覽文本信息時希望長按信息就能彈出復(fù)制的選項方便保存或者在別的頁面使用這些信息。類似的,就像長按WebView或者EditText的內(nèi)容就自動彈出復(fù)制選項。
這里面主要是2個特點:
1、用戶只能瀏覽文本信息而不能編輯這些文本信息;
2、用戶對著文本信息長時間點按可以彈出”復(fù)制” 選項實現(xiàn)復(fù)制;
網(wǎng)上有好多種方法可實現(xiàn),也比較零散, 此處做個小結(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)鍵的一個方法是getDefaultEditable(), return false;即禁止EditText被編輯,變成了不可編輯的EditText,但同時具有EditText的長按復(fù)制功能。更進一步的,如果查看EditText源碼, 就發(fā)現(xiàn)源碼中有一個方法 protected void onCreateContextMenu(ContextMenu menu)
控制了EditText長按彈出的上下文菜單,可以自定義這個方法且實現(xiàn)為空protected void onCreateContextMenu(ContextMenu menu){ }
然后在onTouchEvent事件中攔截處理自定義的點按事件,彈出自定義的菜單。
原理如上, 更直白簡單的方法是直接在xml中使用一個EditText,并且將屬性設(shè)置為 android:editable=”false” .
2、使用OnLongClickListener
直接使用TextView,然后在代碼里給TextView添加OnLongClickListener事件,長按時彈出自定義 “復(fù)制” 菜單(比如結(jié)合 PopupWindow做彈出菜單)。點擊”復(fù)制” 就去獲取TextView的內(nèi)容。
當然, 這里只是獲取內(nèi)容,如何將內(nèi)容放入粘貼管理器還需要一個ClipboardManager 對象。它負責管理復(fù)制后粘貼的這件事。
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(content.trim()); //將內(nèi)容放入粘貼管理器,在別的地方長按選擇"粘貼"即可 cm.getText();//獲取粘貼信息
3、使用setTextIsSelectable()方法
代碼中直接對TextView使用setTextIsSelectable()方法,將TextView設(shè)置成可點按選擇的即可。
TextView tv = new TextView(context); tv.setTextIsSelectable(true);
上面就是常見的長按文本信息彈出”復(fù)制”菜單的一些方法小結(jié)了,希望對大家有所幫助.
以上這篇TextView長按復(fù)制的實現(xiàn)方法(總結(jié))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android應(yīng)用圖標上的小紅點Badge實踐代碼
本篇文章主要介紹了Android應(yīng)用圖標上的小紅點Badge實踐代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07
Android使用Spinner控件實現(xiàn)下拉列表的案例
今天小編就為大家分享一篇關(guān)于Android使用Spinner控件實現(xiàn)下拉列表的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Android實現(xiàn)圖片轉(zhuǎn)高斯模糊以及高斯模糊布局
這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片轉(zhuǎn)高斯模糊的方法,以及高斯模糊布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)自動轉(zhuǎn)圈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android實現(xiàn)類似qq微信消息懸浮窗通知功能
這篇文章主要介紹了Android實現(xiàn)類似qq微信消息懸浮窗通知,需要的朋友可以參考下2018-02-02
Android xml實現(xiàn)animation的4種動畫效果實例代碼
在Android應(yīng)用程序,使用動畫效果,能帶給用戶更好的感覺,做動畫可以通過XML或Android代碼來實現(xiàn)。本文給大家介紹Android xml實現(xiàn)animation的4種動畫效果實例代碼,一起看看吧2016-05-05
Android中RecyclerView上拉下拉,分割線,多條目的實例代碼
這篇文章主要介紹了Android中RecyclerView上拉下拉,分割線,多條目的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-01-01

