DrawerLayout не работает с Android 4.4 и SurfaceView

Сегодня у меня снова был один из тех «андроидных» моментов, который оставил меня в полном неведении.

У меня есть приложение, состоящее из DrawerLayout, которое включает RelativeLayout в качестве контейнера для SurfaceView (surfaceViewContainer) и второй ViewGroup (подкласс RelativeLayout) в качестве навигации.

Когда приложение запускается, в onCreate я расширяю макет и добавляю SurfaceView в SurfaceViewContainer.

На Samsung S2 с 4.1.2 и S3 с 4.3 все работает нормально, я вижу нарисованный SurfaceView и могу открывать и закрывать ящик с помощью жеста смахивания или кнопки «Домой». Затем я протестировал Android 4.4 с Nexus 5 и Nexus 10, на обоих устройствах ящик не появится. Даже нажатие кнопки домой ничего не даст.

Еще более странно: я могу открыть Drawer перед добавлением SurfaceView, когда я это делаю, я могу взаимодействовать с Drawer даже после добавления SurfaceView, даже на Android 4.4, поэтому тогда открытие/закрытие работает.

Итак, мой вопрос: кто-нибудь сталкивался с чем-то подобным раньше, может дать совет или знает, что могло измениться с Android 4.3 на 4.4?!

ps: я уже успешно использовал DrawerLayout в других приложениях, но не в SurfaceView, поэтому я предполагаю, что проблема заключается в этом.

Спасибо


person ElDuderino    schedule 07.01.2014    source источник


Ответы (1)


Пробовали ли вы использовать реализацию onDrawerSlide для drawerListener ящикаLayour, как это

@Override
    public void onDrawerSlide(View drawerView, float slideOffset)
    {
        super.onDrawerSlide(drawerView, slideOffset);
        mDrawerLayout.bringChildToFront(drawerView);
        mDrawerLayout.requestLayout();
    }
person pt123    schedule 14.03.2014
comment
Это сработало! У меня есть полноэкранный рендеринг SurfaceView, и ящик не будет анимироваться при скольжении, но это решило проблему. Спасибо! - person Erik Zivkovic; 02.12.2014
comment
super.onDrawerSlide не может быть решено .. у меня сработали другие вещи. - person Ketan Ahir; 03.03.2015
comment
Большое спасибо, чувак. Ты сделал это для меня. Я боролся с этой проблемой в течение последних двух дней. переопределение метода onDrawSlider прибило его. - person N-JOY; 20.08.2015