网上有好多种方法可实现,也比较零散, 此处做个小结,希望有所帮助。

1、在xml直接添加属性 

 android:textIsSelectable="true"

这样直接实现自带效果

2、通过继承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 } @Overrideprotected boolean getDefaultEditable() {//禁止EditText被编辑 return false; } }

上面很关键的一个方法是getDefaultEditable(), return false;即禁止EditText被编辑,变成了不可编辑的EditText,但同时具有EditText的长按复制功能。更进一步的,如果查看EditText源码, 就发现源码中有一个方法 protected void onCreateContextMenu(ContextMenu menu)

控制了EditText长按弹出的上下文菜单,可以自定义这个方法且实现为空protected void onCreateContextMenu(ContextMenu menu){   }

然后在onTouchEvent事件中拦截处理自定义的点按事件,弹出自定义的菜单。

原理如上, 更直白简单的方法是直接在xml中使用一个EditText,并且将属性设置为 android:editable=”false” .

 

3、使用OnLongClickListener

直接使用TextView,然后在代码里给TextView添加OnLongClickListener事件,长按时弹出自定义 “复制” 菜单(比如结合 PopupWindow做弹出菜单)。点击”复制” 就去获取TextView的内容。

当然, 这里只是获取内容,如何将内容放入粘贴管理器还需要一个ClipboardManager 对象。它负责管理复制后粘贴的这件事。

ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(content.trim()); //将内容放入粘贴管理器,在别的地方长按选择"粘贴"即可 cm.getText();//获取粘贴信息

  4、使用setTextIsSelectable()方法

代码中直接对TextView使用setTextIsSelectable()方法,将TextView设置成可点按选择的即可。

TextView tv = new TextView(context); tv.setTextIsSelectable(true);

 

 

更多相关文章

  1. Android基础部分填坑
  2. Android基础之异步消息处理机制
  3. Android平台上从Camera的jpegquality菜单研究JNI接口(三)
  4. IntentService解析
  5. Android(安卓)self_adaption of screen
  6. 使用Android(安卓)Camera2 API获取YUV数据
  7. sqlite 中判断某个表是否存在的方法
  8. Android导入项目出现“R cannot be resolved to a variable"错误
  9. Android(安卓)相对布局中的 代码中修改属性与布局文件的设置不同

随机推荐

  1. Android(安卓)Studio 插件
  2. 理解Android中的Handler/Message
  3. Android(安卓)Zygote分析
  4. android中基于蓝牙开发的demo
  5. Android酷炫实用的开源框架(UI框架)
  6. Axis2与Android的Json(Gson)通信传数据
  7. Android获取版本号
  8. Android学习系列(40)--Android主题和样式
  9. android push notification serfice andr
  10. 有关Android中EditText的一些属性