下面是一个示例代码,演示如何在Android中提取文本的UI,并自定义上下文菜单项:
首先,在你的布局文件中添加一个TextView控件,用于显示文本内容:
接下来,在你的Activity中,找到TextView控件,并为其设置长按监听器:
TextView textView = findViewById(R.id.textView);
registerForContextMenu(textView);
然后,重写Activity的onCreateContextMenu方法,创建上下文菜单项:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("操作");
menu.add(0, v.getId(), 0, "复制文本");
menu.add(0, v.getId(), 0, "分享文本");
}
接下来,重写Activity的onContextItemSelected方法,处理上下文菜单项的点击事件:
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle().equals("复制文本")) {
// 执行复制文本的操作
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("text", textView.getText().toString());
clipboard.setPrimaryClip(clip);
Toast.makeText(this, "已复制文本", Toast.LENGTH_SHORT).show();
} else if (item.getTitle().equals("分享文本")) {
// 执行分享文本的操作
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, textView.getText().toString());
startActivity(Intent.createChooser(intent, "分享文本"));
} else {
return false;
}
return true;
}
最后,记得在你的Activity的onCreate方法中调用registerForContextMenu方法,以注册上下文菜单的显示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
registerForContextMenu(textView);
}
通过以上代码,你可以在Android应用中实现提取文本的UI,并自定义上下文菜单项。用户长按文本时,会弹出上下文菜单,你可以在onContextItemSelected方法中处理不同菜单项的点击事件,执行相关操作。