隐藏导航栏后,PopupWindow不会在Galaxy S8 +上调整大小

时间:2017-12-05 12:36:08

标签: android popupwindow window-resize

如您所知,三星Galaxy系列的最新设备具有导航栏而非物理键,用户可以随时隐藏它。我在我的应用中发现了一个问题。当用户隐藏导航栏时,我的应用的指南PopupWindow不会调整大小,也不会在Galaxy S8 +上填写导航栏所在的区域。这是我的MainActivity源代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    ......

    mRootLayout = findViewById(R.id.layout_main_root);
    mRootLayout.post(new Runnable() {
        @Override
        public void run() {
            if (!mSettings.getMainGuideSeen()) {
                GuideWindow.open(MainActivity.this, R.layout.window_guide_main);
                mSettings.setMainGuideSeen(true);
            }
        }
    });

    ......
}

以下是我的GuideWindow课程的源代码。

public class GuideWindow {
    private static PopupWindow mPopupWindow;
    private static boolean mIsGuideOn = false;

    public static void open(Activity activity, int resId) {
        View popupView = activity.getLayoutInflater().inflate(resId, null);

        ImageButton closeButton = popupView.findViewById(R.id.button_guide_close);
        closeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                close();
            }
        });

        mPopupWindow = new PopupWindow(popupView, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        mPopupWindow.showAsDropDown(popupView);

        mIsGuideOn = true;
    }

    public static void close() {
        mPopupWindow.dismiss();
        mPopupWindow = null;

        mIsGuideOn = false;
    }

    public static boolean isGuideOn() {
        return mIsGuideOn;
    }
}

请告诉我有什么问题。提前谢谢。

0 个答案:

没有答案