我有一个EditText,它的文本通过代码选择.但我想允许用户剪切/复制所选文本.但是,在用户长按文本之前,不会显示剪切/复制上下文菜单.但它失去了实际的选择.所以,我正在考虑显示上下文菜单,因为代码选择了文本.
我在onFocusChanged中尝试了这个,但没有出现.
openContextMenu(EditText);
最佳答案
如果我正确地使用了usecase,您可以从在measuredEditText上注册的onFocuschangelistener打开上下文菜单.
我准备了一些小测试,似乎正确支持你的用例.
您需要在正在选择EditText中的内容的钩子上打开菜单.
public class Main extends Activity {
private EditText testedEditText;
private Button selectingButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selectingButton = (Button) findViewById(R.id.button);
testedEditText = (EditText) findViewById(R.id.textView);
registerForContextMenu(testedEditText);
selectingButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testedEditText.setSelection(6,11);
openContextMenu(testedEditText);
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu,v,menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.cmenu,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.select_all:
return true;
case R.id.copy:
//do something
return true;
case R.id.cut:
//do something
return true;
case R.id.paste:
//do something
return true;
default:
return super.onContextItemSelected(item);
}
}
}
非常奇怪地注册了testsEditText.requestFocus(),并且为EditText设置onFocusChangedListener是不够的.
copy"
android:title="copy"
/>
main.xml中
ottom="true"
android:layout_centerHorizontal="true"
android:text="button"
/>
原文地址:https://www.jb51.cc/android/431094.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。