【问题标题】:DrawerLayout.openDrawer sometimes not workingDrawerLayout.openDrawer 有时不工作
【发布时间】:2015-04-21 17:01:54
【问题描述】:

我有一个 DrawerLayout 通常可以完美运行。我正在使用通过调用此方法打开抽屉的按钮:

mDrawerLayout.openDrawer(mFragmentContainerView);

正如我所说,一切正常,但有时当活动从后台返回时,openDrawer 方法什么也不做。

通过使用

mDrawerLayout.isDrawerOpen(mFragmentContainerView);

在调用openDrawer方法之前和之后,我可以看到它总是关闭的。

我为此花了几个小时。到底是怎么回事?任何线索表示赞赏!

【问题讨论】:

  • 您是否在该活动中覆盖了您的 onresume 并导致抽屉布局出现任何问题?
  • 不,我没有覆盖任何 onResume。

标签: android navigation-drawer slidingdrawer


【解决方案1】:

像这样利用重力打开和关闭抽屉

if (mDrawerLayout.isDrawerOpen(Gravity.START)) {
                        mDrawerLayout.closeDrawers();
                    } else {
                        mDrawerLayout.openDrawer(Gravity.START);
                    }

或使用 View.VISIBLE 和 View.GONE 代替 Gravity。

【讨论】:

  • 谢谢,但 Gravity.START 不起作用。并且 View.VISIBLE 或 View.GONE 会抛出异常 IlegalArgumentException "container is not a rolling drawer"。
  • 在您的 darwer 布局 xml 文件中,您所包含的布局必须设置为启动重力。
  • 是的,布局有gravity="start"。这就是它通常有效的原因。
  • 那么 Gravity 应该可以工作了,只需在此处添加您的抽屉代码,以便我查看。
  • 我不认为这是重力问题。我已经尝试了这方面的一切。似乎是在启动两个活动实例时出现问题;然后其中一个没有打开抽屉。似乎在活动中设置 singleTask 标志可以解决问题,但我会做更多测试......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多