Android - 横屏后工具栏变为可见且不隐藏的 ActionMode

Android - ActionMode after landscape the Toolbar becomes visible and does not hide

我有一个根视图,这个根视图包含一个带有 viewpager 的片段。这是我的内容片段。我更新了这个 ContentFragment 的视图以获取 viewpager 行为。现在,当我为 ContentFragment 的视图激活 ActionMode 时,ActionMode 最初隐藏了根视图的工具栏,这是如下所示的期望结果:

不幸的是,在横向模式之后,工具栏再次变得可见并且不会隐藏。检查下图:

之后我总是在 ActionMode 中看到以下视图,即使我将设备竖直放置也是如此:

而不是这个:(期望的视图)

当我使用这行代码手动隐藏工具栏时:

toolbar.visibility = View.INVISIBLE

toolbar.visibility = View.GONE

在根视图中,ActionMode 与 ListView 的第一项重叠,如下所示:

我有

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

用于 themes.xml,我敢肯定。但问题是为什么 ActionMode 最初隐藏了 Toolbar,但是在横向模式之后 Toolbar 又变得可见并且永远不会隐藏。

我认为这可能是重新创建片段造成的。 片段创建操作栏,但当设备旋转时,片段被重新创建,但操作栏未在片段重新创建状态上更新,因此工具栏再次显示

您可能想在创建片段时执行类似的操作

//Write in OncreatFragment
If (getActivity().getSupportActionBar() != null ) {
//hide action bar
//Toolbar should automatically be shown as you said
} else {
//Do nothing since this is the start of the fragment.
}

此外,您应该保存一个布尔值或整数,以便在显示操作栏时重新创建片段时,您将重新创建操作栏

//Write in OncreatFragment
If (getActivity().getSupportActionBar() != null ) {
   if (wasActionBarPreviouslyShown) {
   //Receate the action bar this should automatically hide the toolbar
   } else {
   //hide the action bar since it wasn't previously shown toolbar should automatically be shown as you have stated.               }
} else {
    //Do nothing.
}

我希望这能有所帮助,即使只是一点点。

actionBarSize 固定到工具栏高度解决了我的问题。我刚刚添加了

<item name="actionBarSize">@dimen/toolbar_action_mode_height</item>

我的主题。问题已解决。