要实现Android EditText只有复制/选择选项,可以通过设置EditText的长按监听器并禁用其他选项来实现。以下是一个示例代码:
EditText editText = findViewById(R.id.editText);
// 设置长按监听器
editText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// 创建弹出菜单
PopupMenu popupMenu = new PopupMenu(MainActivity.this, v);
popupMenu.getMenuInflater().inflate(R.menu.edittext_menu, popupMenu.getMenu());
// 禁用其他选项
popupMenu.getMenu().findItem(android.R.id.cut).setVisible(false);
popupMenu.getMenu().findItem(android.R.id.paste).setVisible(false);
popupMenu.getMenu().findItem(android.R.id.shareText).setVisible(false);
// 设置菜单项的点击监听器
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.copy:
// 执行复制操作
editText.onTextContextMenuItem(android.R.id.copy);
return true;
}
return false;
}
});
// 显示菜单
popupMenu.show();
return true;
}
});
上述代码中,我们首先获取了EditText的实例,并为其设置了一个长按监听器。在监听器中,我们创建了一个PopupMenu,并通过inflate()
方法将自定义的菜单布局文件(edittext_menu.xml)加载到PopupMenu中。然后,我们通过setVisible(false)
方法禁用了除复制选项外的其他选项。接下来,我们为菜单项设置了一个点击监听器,当点击复制选项时,我们调用onTextContextMenuItem()
方法执行复制操作。最后,我们调用show()
方法显示弹出菜单,并返回true
表示长按事件已处理。