TextView长按复制实现方法3种方法实践总结-创新互联
实现效果
创新互联公司专注于海州企业网站建设,响应式网站建设,商城网站制作。海州网站建设公司,为海州等地区提供建站服务。全流程按需求定制网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务使用ContextMenu
(1)注册菜单
@Override
public void onCreate(Bundle savedInstanceState) {
mMoblieTextView = (TextView) findViewById(R.id.mobile_textview);
//注册上下文菜单
registerForContextMenu(mMoblieTextView);
}
(2)onCreateContextMenu添加菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
//在上下文菜单选项中添加选项内容
//add方法的参数:add(分组id,itemid, 排序, 菜单文字)
menu.add(0, 0, 0, "复制电话号码");
}
(3)点击事件响应
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (item.getItemId() == 0) {
if (null == clipboard) {
clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
}
// Creates a new text clip to put on the clipboard
ClipData clip = ClipData.newPlainText("simple text",mMoblieTextView.getText());
// Set the clipboard's primary clip.
clipboard.setPrimaryClip(clip);
return true;
}
return super.onContextItemSelected(item);
}
2.使用OnLongClickListener 弹出 PopupWindow实现
(1)OnLongClickListener事件响应
PopupWindow PopupmenuCopy;
// 帮助窗口
TextView mPopUpBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
mMoblieTextView = (TextView) findViewById(R.id.mobile_textview);
mMoblieTextView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
popupCopy();
return false;
}
});
}
(2)创建窗口
private void popupCopy() {
LayoutInflater layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoutView = layoutInflater.inflate(
R.layout.popup_copy, null);
// Creating the PopupWindow
RelativeLayout popLayout = (RelativeLayout) layoutView
.findViewById(R.id.popLayout);
scaleFontSize(popLayout);
PopupmenuCopy = new PopupWindow(mContext);
PopupmenuCopy.setContentView(layoutView);
PopupmenuCopy.setWidth(LayoutParams.WRAP_CONTENT);
PopupmenuCopy.setHeight(LayoutParams.WRAP_CONTENT);
PopupmenuCopy.setBackgroundDrawable(getResources().getDrawable(
R.drawable.left_drawer_item_bg));
PopupmenuCopy.setFocusable(true);// 点击空白处时,隐藏掉pop窗口
PopupmenuCopy.setOutsideTouchable(true);
mPopUpBtn = (TextView) layoutView.findViewById(R.id.popbtn);
// 帮助页面按钮事件响应
mPopUpBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (null == clipboard) {
clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
}
// Creates a new text clip to put on the clipboard
ClipData clip = ClipData.newPlainText("simple text",mMoblieTextView.getText());
clipboard.setPrimaryClip(clip);
PopupmenuCopy.dismiss();
}
});
int[] location = new int[2];
mMoblieTextView.getLocationOnScreen(location);
PopupmenuCopy.showAtLocation(mMoblieTextView,Gravity.NO_GRAVITY, location[0],location[1]+mMoblieTextView.getHeight());
//控件上方
//PopupmenuCopy.showAtLocation(mMoblieTextView,Gravity.NO_GRAVITY, location[0], location[1]-PopupmenuCopy.getHeight());
}
(3)popup_copy布局文件
android:id="@+id/popLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/transparent" > android:id="@+id/popbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="@string/copy_mobileID" android:textSize= "@dimen/add_item_text_size" android:background="@drawable/btn_copy_selector" android:textColor="@color/black" android:gravity="center" android:layout_centerInParent="true" />
3.使用使用OnLongClickListener 弹出 QuickAction实现
QuickAction mQuickAction;
mMoblieTextView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
mQuickAction.show(v);
return false;
}
});
ActionItem copyItem = new ActionItem(0, getString(R.string.copy_mobileID));
mQuickAction = new QuickAction(mContext);
mQuickAction.addActionItem(copyItem);
//setup the action item click listener
mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
@Override
public void onItemClick(QuickAction quickAction, int pos, int actionId) {
switch (actionId) {
case 0:
if (null == clipboard) {
clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
}
ClipData clip = ClipData.newPlainText("simple text",mMoblieTextView.getText());
clipboard.setPrimaryClip(clip);
break;
default:
break;
}
}
});
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:TextView长按复制实现方法3种方法实践总结-创新互联
网页路径:http://ybzwz.com/article/dhioho.html