0

我有一个根视图,这个根视图包含一个带有 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 最初隐藏了工具栏,但在横向模式之后工具栏又变得可见并且从不隐藏。

4

2 回答 2

0

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

你可能想在创建片段时做这样的事情

//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.
}

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

于 2021-12-01T10:42:57.533 回答
0

修复actionBarSize工具栏高度解决了我的问题。我刚刚添加

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

我的主题。并且问题解决了。

于 2021-12-01T11:50:01.133 回答