Всплывающее окно отображается с пробелом в режиме погружения, только для Зефира
В частности, на Зефир (проверено на 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);