android] TextView文本的 “选择文字”“复制” “
2013-11-25 11:22
543 查看
EditText的长按事件会自动弹出上下文菜单,其中有“选择文字”“复制”“粘贴”等功能选项,想让TextView也具有这样的功能,经研究,EditText就是继承于TextView而来的,在TextView的源码中就存在“选择文字”“复制”“粘贴”等功能的代码,(但是为什么在布局中添加<TextView />组件却不能直接使用这些功能呢,尚有待研究),我发现一种简单方法可以使EditText“变成”具有“选择文字”“复制”“粘贴”等功能的“TextView”,在布局文件中这样写(注意:一定要写上粗体的那几句代码):
<EditText
android:editable="false"
android:gravity="top"
android:background="#030303"
android:textColor="#FFFFFF"
android:id="@+id/tv" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="sdfsdaddfsfsf "
/>
这样设置的EditText运行后展现出来的就像是一个TextView了(如下图。但是有个光标会在一直闪)
如果在书写代码时感觉用EditText当TextView很奇怪,可以自定义一个View继承于EditText,比如:
package com.test;
public class MyTextView extends EditText {
public MyTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected boolean getDefaultEditable() {//等同于在布局文件中设置
android:editable="false"
return false;
}
}
在布局文件中则写为:
<com.test.MyTextView
android:background="#030303"
android:textColor="#FFFFFF"
android:gravity="top"
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="sdfsdaddfsfsf"
/>
-------------------------------------------------------------------------------------------------
以上方法虽然实现了文本的选择、复制等功能,但是感觉使用起来不方便,需要长按组件,在弹出的上下文菜单中选择“选择文本”,然后再去选中想要的字,这一系列的操作比较繁琐,用户体验不是很好。
下面再来研究一个比较灵活的自定义TextView的实现,可以直接选中文本的。
-------------------------------------------------------------------------------------------------
此效果的实现需要两个步骤:
1.选择 文本:
(有待研究)
有一个 Selection 类~
2.设置到剪贴板中:
android的剪贴板功能,比如将文本复制到剪贴板或者从剪贴板复制数据等操作。使用起来很简单,系统给我们提供了很方便的接口,如下所示:
//获取剪贴板管理服务
ClipboardManager cm =(ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
//将文本数据复制到剪贴板
cm.setText(message);
//读取剪贴板数据(EditText的长按事件会自动弹出上下文菜单,其中有“粘贴”的功能选项,应该是调用了下面的方法获得要粘贴的数据。这个粘贴的功能系统已经实现了,不需要我们自己调用了。)
cm.getText();
<EditText
android:editable="false"
android:gravity="top"
android:background="#030303"
android:textColor="#FFFFFF"
android:id="@+id/tv" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="sdfsdaddfsfsf "
/>
这样设置的EditText运行后展现出来的就像是一个TextView了(如下图。但是有个光标会在一直闪)
如果在书写代码时感觉用EditText当TextView很奇怪,可以自定义一个View继承于EditText,比如:
package com.test;
public class MyTextView extends EditText {
public MyTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected boolean getDefaultEditable() {//等同于在布局文件中设置
android:editable="false"
return false;
}
}
在布局文件中则写为:
<com.test.MyTextView
android:background="#030303"
android:textColor="#FFFFFF"
android:gravity="top"
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="sdfsdaddfsfsf"
/>
-------------------------------------------------------------------------------------------------
以上方法虽然实现了文本的选择、复制等功能,但是感觉使用起来不方便,需要长按组件,在弹出的上下文菜单中选择“选择文本”,然后再去选中想要的字,这一系列的操作比较繁琐,用户体验不是很好。
下面再来研究一个比较灵活的自定义TextView的实现,可以直接选中文本的。
-------------------------------------------------------------------------------------------------
此效果的实现需要两个步骤:
1.选择 文本:
(有待研究)
有一个 Selection 类~
2.设置到剪贴板中:
android的剪贴板功能,比如将文本复制到剪贴板或者从剪贴板复制数据等操作。使用起来很简单,系统给我们提供了很方便的接口,如下所示:
//获取剪贴板管理服务
ClipboardManager cm =(ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
//将文本数据复制到剪贴板
cm.setText(message);
//读取剪贴板数据(EditText的长按事件会自动弹出上下文菜单,其中有“粘贴”的功能选项,应该是调用了下面的方法获得要粘贴的数据。这个粘贴的功能系统已经实现了,不需要我们自己调用了。)
cm.getText();
相关文章推荐
- 【android】TextView文本的 “选择文字”“复制” “粘贴” 功能的实现
- Android TextView中文本点击文字跳转
- Android TextView实现长按复制文本功能的方法
- android textview自动识别网址,点击长按选择文本
- Android开发 TextView文字复制功能(类似EditText)
- Android 自定义Textview实现文字两端对齐功能和长按自由选择文字弹出自定义ActionMenu功能(二)自定义ActionMenu
- Android TextView中文本点击文字跳转 (代码简单)
- Android TextView长按复制文本
- android中textview设置为多行文本时,如何让文字从最顶开始显示
- android WebView 长按自由复制文字,进入文字选择模式
- Android 自定义Textview实现文字两端对齐功能和长按自由选择文字弹出自定义ActionMenu功能(一)
- Android textView复制,popupwindow显示在文字上方
- Android:可复制的TextView、EditText,复制文字到剪贴板
- Android TextView富文本、超链接和添加文字背景等其他效果的实现
- android中textview设置为多行文本时,如何让文字从最顶开始显示
- Android 如何设置让TextView文本可被选择
- Android TextView文本文字修改实例
- Android textview 实现长按自由选择复制功能
- Android textview 实现长按自由选择复制功能的方法
- Android开发TextView实现长按复制文本功能的方法