gpt4 book ai didi

android - 上下文操作菜单不会在视觉上超过 fragment 中的操作栏位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:27 27 4
gpt4 key购买 nike

我有一个 ActivityFragment包含 ListView与项目,用户可以点击并调用上下文操作模式。

我喜欢发生的事情是 documentation是说:

The contextual action bar is not necessarily associated with the action bar. They operate independently, even though the contextual action bar visually overtakes the action bar position.

但是,这是我目前遇到的行为。截至目前,上下文操作模式显示在 上方 ActionBar ,如下图所示。

current

到目前为止我尝试过但没有成功的:

  • 移动 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 , 作为文档状态应该是什么?

最佳答案

解决办法是添加

<item name="android:windowActionModeOverlay">true</item>

到我的主题,现在看起来像

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowActionModeOverlay">true</item>
</style>

我在查看 this answer 后找到了解决方案

关于android - 上下文操作菜单不会在视觉上超过 fragment 中的操作栏位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com