Android :在 API 23 之前设置重叠锚点



我的活动有一个弹出窗口,定义如下:

this.navigationMenuPopupWindow = new PopupWindow(View.inflate(this, R.layout.popup_navigation, null), ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
this.navigationMenuPopupWindow.setWidth((int) this.getResources().getDimension(R.dimen.navigation_popup_width));
this.navigationMenuPopupWindow.setBackgroundDrawable(this.getDrawable(R.drawable.main_bg_navigation_menu));
this.navigationMenuPopupWindow.setElevation(43);
this.navigationMenuPopupWindow.setFocusable(true);
this.navigationMenuPopupWindow.setOutsideTouchable(true);

我想将弹出窗口放置在锚点下方。所以我自然而然地尝试添加这一行:

this.navigationMenuPopupWindow.setOverlapAnchor(false);

不幸的是,它需要 API 23。我怎样才能获得相同的结果,但它与API 21兼容?

我想我可以通过修改我的应用程序样式来解决这个问题,但我不知道具体如何。顺便说一句,这可能会影响应用程序的所有弹出窗口,这不是问题,我只有一个。感谢您的帮助!

您需要

使用 PopupWindowCompat .

PopupWindowCompat.setOverlapAnchor(this.navigationMenuPopupWindow,true);

请注意,PopupWindowCompat.setOverlapAnchor在 API 21 之前没有实现。

最新更新