【发布时间】:2014-07-08 00:11:46
【问题描述】:
我知道类似的问题已经在这个网站上发布过很多次了,但是,我的问题不是我如何在不同的片段中显示/隐藏菜单项。我把它记下来了。问题是在滑动片段和显示或隐藏新菜单项之间存在延迟。这种延迟确实有损于界面。除其他原因外,操作栏菜单项中的更改应立即进行,以避免单击错误片段中的某些菜单项。
所以问题是,如何在用户开始滑动片段以转到下一个片段时立即更改操作栏中的菜单项?
我知道这是可能的,因为各种应用程序已经这样做了。 我目前正在覆盖每个片段中的 onPrepareOptionsMenu() 方法,并告诉它要显示哪些项目以及要隐藏哪些项目。我使用 supportInvalidateOptionsMenu() 方法来提示菜单项的变化,但延迟仍然太长且明显。
我愿意改变我在片段中更改菜单项的结构/技术以便在滑动开始后立即更改菜单时间。
请帮忙。谢谢!
【问题讨论】:
-
请记住,在用户松开手指之前,他们可以“放弃”页面更改,只需反转滑动方向即可。这就是为什么在提交页面更改之前操作栏更改不应生效的原因;否则,如果他们放弃页面更改,他们将拥有错误的项目,因为您更改得太早了。如果您想尝试围绕一些框架来尝试在手指抬起后动画完成时发生这些操作栏更改(可能会为该动画添加卡顿),这可能值得一试.
-
@CommonsWare 你是对的!我曾考虑过这一点,但我在想也许所有菜单项都会在滑动时立即消失,然后在提交更改后立即出现正确的菜单项。我认为这将是一个更好的解决方案。知道如何立即隐藏所有菜单项吗?
-
好吧,您可以尝试
setVisible(false)隐藏它们,等待完全切换。这可能比完整的操作栏失效更快。
标签: android android-fragments android-actionbar android-support-library android-menu