这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
下面小编就为大家带来一篇 Android textview 实现长按自由选择复制功能的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这里有一个大坑,我的 viewGroup 中有一个这个属性 android:descendantFocusability="blocksDescendants"
开始没有注意到,试了好多方法都不行,后来才看到这个属性,顺便科普一下,这个属性有三个值~
beforeDescendants:viewgroup 会优先其子类控件而获取到焦点
afterDescendants:viewgroup 只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup 会覆盖子类控件而直接获得焦点
这里使用 afterDescendants 就好了,
标题有一点误区,其实这里的 textView 是 editText,只是样子像 textView 而已,直接上代码
- <EditText
- android:id="@+id/order_details_tv_order_number"
- style="@style/theme_loginEditText"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:background="@null"
- android:editable="false"
- android:textIsSelectable="true"
- android:gravity="right|center_vertical"
- android:lines="1"
- android:textColor="@color/pub_color_black"
- android:textCursorDrawable="@null"
- android:textSize="@dimen/text_h16"
- tools:text="2382787482347" />
其中需要注意的是这几个属性
android:background="@null"// 背景设为 null,去掉 editText 下划线 android:textCursorDrawable="@null"// 游标设为 null,去掉游标 android:editable="false"// 不可编辑 android:textIsSelectable="true"// 文字内容可选
测试发现部分 rom 会弹不出来系统自带复制按钮,加入下面代码可以保证复制成功
- tvView.setOnLongClickListener(new OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- ClipboardManager cm =(ClipboardManager)getContext().getSystemService(Context.CLIPBOARD_SERVICE);
- cm.setText(orderDetailsTvOrderNumber.getText().toString());
- //ToastUtil.toastSth(getContext() , "订单号已复制到剪切板,快去粘贴吧~");
- return false;
- }
- });
以上这篇 Android textview 实现长按自由选择复制功能的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0508/333734.html