Всплывающее окно отображается с пробелом в режиме погружения, только для Зефира

В частности, на Зефир (проверено на Nexus 5X и 6P), когда я открываю PopupWindow (который имеет ширину и высоту match_parent) на экране в иммерсивном режиме, содержимое всплывающего окна не расширяется до полного экрана, есть разрыв, в котором раньше находились кнопки навигации. Эффект такой, как если бы невидимые кнопки навигации все еще были там, добавляя пробел / пробел / поле.

Вот как я создаю всплывающее окно:

PopupWindow popup = new PopupWindow(popupView, FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT, false);

popup.showAtLocation(activity.findViewById(R.id.full_screen_root_view), Gravity.CENTER, 0, 0);

Это начало всплывающего макета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/popup"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#AA000000">

Это полноэкранный вид, где отображается всплывающее окно:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/full_screen_root_view"
    android:background="@android:color/black">

Знаете ли вы, если что-нибудь изменилось с Зефиром, что вызвало бы именно эту ошибку? Все хорошо работает в Nexus 5, с версией 5.0.1 и другими старыми телефонами / версиями, которые я тестировал. Заранее спасибо!:)

3 ответа

У меня есть эта проблема раньше. Я решил, установив PopupWindow с фокусом на false, прежде чем показывать.

PopupWindow mWindow = new PopupWindow(context);
mWindow.setFocusable(false);
mWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, xPos, yPos);

Я решил с Gravity.FILL_VERTICAL

popup.showAtLocation(activity.findViewById(R.id.full_screen_root_view), Gravity.FILL_VERTICAL, 0, 0);

Вы можете попробовать это.

установить фон всплывающего окна

ColorDrawable colorDrawable = new ColorDrawable(Color.WHITE);
setBackgroundDrawable(colorDrawable);