3

今天我再次遇到了那些“安卓”时刻之一,这让我完全无能为力。DrawerLayout不能与Android 4.4和SurfaceView兼容

我有一个由DrawerLayout组成的应用程序,它包含一个作为导航的SurfaceView(surfaceViewContainer)和第二个ViewGroup(RelativeLayout的子类)的容器的RelativeLayout。

当应用程序启动时,在onCreate中充气布局并将SurfaceView添加到surfaceViewContainer。

在4.1.2上的三星S2和4.3上的S3一切正常,我可以看到SurfaceView绘制,我可以通过滑动手势或主页按钮打开和关闭抽屉。然后,我使用Nexus 5和Nexus 10在Android 4.4上进行了测试,在两个设备上抽屉都不会出现。即使按主页按钮也不会做任何事情。

即使是陌生人:我可以在添加SurfaceView之前打开抽屉,当我这样做时,即使在Android 4.4上添加SurfaceView后,我仍然可以与抽屉进行交互,因此打开/关闭工作。

所以我的问题:任何人经历过这样的事情,或有一些建议或知道可能已经从Android 4.3更改为4.4?!

ps:我已经在其他应用程序中成功使用过DrawerLayout,只是没有使用SurfaceView,所以我认为问题在于此。

感谢

回答

9

您是否尝试过使用在drawerLayour的drawerListener实施onDrawerSlide这样

@Override 
    public void onDrawerSlide(View drawerView, float slideOffset) 
    { 
     super.onDrawerSlide(drawerView, slideOffset); 
     mDrawerLayout.bringChildToFront(drawerView); 
     mDrawerLayout.requestLayout(); 
    } 
+0

它的工作!我有一个全屏幕SurfaceView渲染和抽屉不会在滑入时动画,但是这解决了它。谢谢! –

+0

'super.onDrawerSlide'无法解析..其他事情为我工作。 –

+0

非常感谢您的支持。你为我做了。过去两天我一直在为这个问题苦苦挣扎。覆盖onDrawSlider方法钉住了它。 –