我有一个Activity
,Fragment
包含ListView
个项目,用户可以点击这些项目并调用上下文操作模式。
我喜欢发生的事情是documentation说明:
上下文操作栏不一定与 行动吧。它们独立运作,即使是背景 操作栏直观地取代操作栏位置。
然而,这是我目前正在经历的行为。截至目前,上下文操作模式显示高于 ActionBar
,如下图所示。
到目前为止我没有成功的尝试:
ActionMode
逻辑从Fragment
移至主持人Activity
。<item name="windowActionModeOverlay">true</item>
。getActivity().getMenuInflater()
而非mode.getMenuInflater()
。这是我调用上下文操作菜单的代码
public class NotesFragment extends Fragment implements View.OnClickListener{
private ActionMode mActionMode;
@Override
public void checkBoxChecked(Note which) {
if (mActionMode == null)
mActionMode = getActivity().startActionMode(mActionModeCallback);
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context, menu);
return true;
}
// Called each time the action mode is shown.
// Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.context_delete:
//Do work unrelated to topic
mode.finish(); // Action picked, so close the CAB
return true;
case R.id.context_move:
//Do work unrelated to topic
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
};
}
编辑:
这是Activity
,其中Fragment
位于:
public class MainActivity extends ActionBarActivity implements DialogFragmentMoveNote.DialogFragmentMoveNoteListener,
DialogFragmentRemoveNote.DialogFragmentRemoveNoteListener, DialogFragmentAddNewFolder.DialogFragmentAddNewFolderListener,
DialogFragmentDeleteFolder.DialogFragmentDeleteFolderListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onAddNewFolderPositiveClick(Folder folder) {
//Tell the fragment to do work
}
@Override
public void onRemoveNotesPositiveClick() {
//Tell the fragment to do work
}
@Override
public void onMoveNotePositiveClick(String chosenFolder) {
//Tell the fragment to do work
}
@Override
public void onDeleteFolderPositiveClick() {
//Tell the fragment to do work
}
private void displayNoteDetailsFromWidget(String noteId){
//Tell the fragment to do work
}
}
为什么上下文操作菜单在视觉上不会超过ActionBar
,因为文档状态应该是?
答案 0 :(得分:5)
解决方法是添加
<item name="android:windowActionModeOverlay">true</item>
到我的Theme
,现在看起来像
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowActionModeOverlay">true</item>
</style>
我在查看this answer
后找到了解决方案