【发布时间】:2012-10-21 06:04:30
【问题描述】:
我有一个应用程序,我希望能够显示一个 TextView(或 EditText),允许用户选择一些文本,然后按一个按钮来处理该文本。在 Honeycomb 之前的 Android 版本上实现这一点没有问题,但在 Honeycomb 及更高版本上,默认的长按操作是显示带有复制/剪切/粘贴选项的操作栏。我可以截取长按以显示我自己的操作栏,但是我没有显示文本选择句柄。
一旦我启动了自己的 ActionMode,我该如何显示文本选择句柄?
这是我用来启动 ActionMode 的代码,除了没有显示文本选择句柄之外,它可以工作:
public boolean onLongClick(View v) {
if(actionMode == null)
actionMode = startActionMode(new QuoteCallback());
return true;
}
class QuoteCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.quote, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.quote:
Log.d(TAG, "Selected menu");
mode.finish();
// here is where I would grab the selected text
return true;
}
return false;
}
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
}
【问题讨论】:
-
有什么方法可以在按钮点击上做到这一点,比如..我有一个文本视图,它是可选的。我想在单击按钮时启动与 wit 文本视图相关的默认操作模式(全选并复制)。我不能使用 textview 的 performLongClick (),因为它已经被覆盖了。有没有可能实现这一目标?我尝试了 startActionMode(),但它以空白操作栏打开..
标签: android android-edittext textview contextual-action-bar