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>
我的主题。问题已解决。
我有一个根视图,这个根视图包含一个带有 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>
我的主题。问题已解决。