【发布时间】:2015-04-21 18:51:15
【问题描述】:
我已将以下代码放入 导航抽屉 的 onDrawerSlide 方法中,以便在抽屉打开时移动内容。
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
container.setTranslationX(slideOffset * drawerView.getWidth());
mDrawerLayout.bringChildToFront(drawerView);
mDrawerLayout.requestLayout();
}
除了第一次运行应用程序外,它几乎总是完美运行 - 我以编程方式打开抽屉来教用户使用它。 所以,当我打电话时
if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
mDrawerLayout.openDrawer(mFragmentContainerView);
}
抽屉正在打开,但未调用 onDrawerSlide。
我想,原因是某些东西没有足够的时间来加载,但我不知道究竟是什么以及如何逃避它。
当我在运行后几秒钟内调用 openDrawer 时(通过 Handler),它可以工作,但它在 UI 上看起来很糟糕。
PS。尝试在 onCreate、onResume 中调用 openDrawer,在调用 Activity 时 - 仍然没有结果。
PPS。我也无法直接调用 onDrawerSlide - 因为我不知道 slideOffset 值。
【问题讨论】: