只需要在Textview中增加android:textIsSelectable="true"即可长按弹出复制,如果要弹出对话框,那就要用Dialog,dialog的用法如下:Android中,在Dialog中增加EditText需要使用view控件,也可参考附件源代码。具体实现代码:1.创建对象框AlertDialog.Builder builder = new Builder(context);builder.setTitle("请输入"); //设置对话框标题builder.setIcon(android.R.drawable.btn_star); //设置对话框标题前的图标2.创建EditText输入框final EditText edit = new EditText(context);3.将输入框赋值给Dialog,并增加确定取消按键builder.setView(edit);builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, "你输入的是: " + edit.getText().toString(), Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, "你点了取消", Toast.LENGTH_SHORT).show();}});4.设置常用api,并show弹出builder.setCancelable(true); //设置按钮是否可以按返回键取消,false则不可以取消AlertDialog dialog = builder.create(); //创建对话框dialog.setCanceledOnTouchOutside(true); //设置弹出框失去焦点是否隐藏,即点击屏蔽其它地方是否隐藏dialog.show();
AlertDialog.Builder有现成的API可以实现显示复选框的内容。1.创建AlertDialog.Builder并设置数据源AlertDialog.Builder builder = new Builder(context);builder.setTitle("复选框"); //设置对话框标题builder.setIcon(android.R.drawable.ic_menu_more); //设置对话框标题前的图标final String[] data = getResources().getStringArray(R.array.radio); //通过resources 得到strings.xml中的字符串数组boolean[] state = new boolean[data.length];for(int i=0; i<data.length; i++){state[i] = sboolean.get(i); //将状态集合中的数据取出来,下次选择时候会默认选中}2.注册点击事件,并记录复选的数据/** 第一个参数是,数据原,可以是数组,也可以传strings.xml那的字符串ID,但是建议用数组,因为多选监听返回的是数组的标下* 第二个参数是,默认的选中位置,是个boolean数组,对应item的位置* 第三个是列表点击监听事件*/builder.setMultiChoiceItems(R.array.radio, state, new DialogInterface.OnMultiChoiceClickListener() {//注册单选择监听事件@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {if(isChecked){Toast.makeText(context,"你选择了: " + data[which], Toast.LENGTH_SHORT).show();checkBoxData.add(data[which]); //选择的时候要保存起来}else{Toast.makeText(context,"你取消了: " + data[which], Toast.LENGTH_SHORT).show();checkBoxData.remove(data[which]); //取消选中的时候要删除掉}sboolean.put(which, isChecked); //每次选择都要记录下这个item的状态}});3.增加确定和取消按键builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context, "你点了确定,选择的是: " + checkBoxData.toString(), Toast.LENGTH_SHORT).show();}});4.设置dialog的相关参数,并弹出builder.setNegativeButton("取消", null); //取消不做任何处理builder.setCancelable(true); //设置按钮是否可以按返回键取消,false则不可以取消AlertDialog dialog = builder.create(); //创建对话框dialog.setCanceledOnTouchOutside(true); //设置弹出框失去焦点是否隐藏,即点击屏蔽其它地方是否隐藏dialog.show();
如果你不用TextView 而采用 EditText的话,就支持拖动选择文字,当然也支持长按弹出式菜单, 另外,其它控件只要你让它支持LongTouch事件并实现LongTouch监听器就可以长按后弹出菜单。另外,如果你不喜欢EditText中的弹出式键盘,你可以隐藏它,并且可以设置文字内容不被改变