DrawerLayout 不适用于 Android 4.4 和 SurfaceView
Posted
技术标签:
【中文标题】DrawerLayout 不适用于 Android 4.4 和 SurfaceView【英文标题】:DrawerLayout not working with Android 4.4 & SurfaceView 【发布时间】:2014-01-07 15:57:28 【问题描述】:今天我又经历了一个“机器人”时刻,这让我完全一无所知。
我有一个由 DrawerLayout 组成的应用程序,其中包括一个作为 SurfaceView (surfaceViewContainer) 容器的 RelativeLayout 和一个作为导航的第二个 ViewGroup(RelativeLayout 的子类)。
当应用程序启动时,在 onCreate 中我膨胀布局并将 SurfaceView 添加到 surfaceViewContainer。
在配备 4.1.2 的三星 S2 和配备 4.3 的 S3 上一切正常,我可以看到 SurfaceView 已绘制,我可以通过滑动手势或主页按钮打开和关闭抽屉。然后我在 android 4.4 上使用 Nexus 5 和 Nexus 10 进行了测试,在这两种设备上抽屉都不会出现。即使按下主页按钮也无济于事。
更奇怪的是:我可以在添加 SurfaceView 之前打开 Drawer,当我这样做时,即使在 Android 4.4 上添加 SurfaceView 之后,我也可以与 Drawer 进行交互,因此打开/关闭可以正常工作。
所以我的问题是:任何人以前经历过这样的事情或有一些建议或知道从 Android 4.3 到 4.4 可能发生了什么变化?!
ps:我已经在其他应用中成功使用了 DrawerLayout,只是没有使用 SurfaceView,所以我认为问题出在此处。
谢谢
【问题讨论】:
【参考方案1】:您是否尝试过像这样在drawerLayour的drawerListener上使用onDrawerSlide实现
@Override
public void onDrawerSlide(View drawerView, float slideOffset)
super.onDrawerSlide(drawerView, slideOffset);
mDrawerLayout.bringChildToFront(drawerView);
mDrawerLayout.requestLayout();
【讨论】:
成功了!我有一个全屏 SurfaceView 渲染,滑入时抽屉不会动画,但这解决了它。谢谢!super.onDrawerSlide
无法解决..其他事情对我有用。
非常感谢老兄。你是为我做的。过去两天我一直在努力解决这个问题。重写 onDrawSlider 方法成功了。以上是关于DrawerLayout 不适用于 Android 4.4 和 SurfaceView的主要内容,如果未能解决你的问题,请参考以下文章
android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕