ユーザーがテキストを選択し、ボタンを押してそのテキストで何かを実行できるようにする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;
}
}