2

特别是在 Marshmallow(在 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">

你知道 Marshmallow 是否有任何改变会导致这个错误?在 Nexus 5 中一切正常,版本 5.0.1 和我测试过的其他旧手机/版本。先感谢您!:)

4

3 回答 3

2

我以前有这个问题。我通过在显示之前将 PopupWindow focusable 设置为 false 来解决。

PopupWindow mWindow = new PopupWindow(context);
mWindow.setFocusable(false);
mWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, xPos, yPos);
于 2016-09-12T04:01:03.150 回答
0

我用 Gravity.FILL_VERTICAL 解决了

popup.showAtLocation(activity.findViewById(R.id.full_screen_root_view), Gravity.FILL_VERTICAL, 0, 0);
于 2017-07-04T09:36:06.387 回答
0

你可以试试这个。

设置弹出窗口背景可绘制。

ColorDrawable colorDrawable = new ColorDrawable(Color.WHITE);
setBackgroundDrawable(colorDrawable);
于 2017-05-02T03:33:19.983 回答