【问题标题】:DrawerLayout not working with Android 4.4 & SurfaceViewDrawerLayout 不适用于 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,所以我认为问题出在此处。

谢谢

【问题讨论】:

    标签: android surfaceview android-4.4-kitkat android-4.3-jelly-bean drawerlayout


    【解决方案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 方法成功了。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2019-08-10
    相关资源
    最近更新 更多