Android:API 23之前的setOverlapAnchor

时间:2017-01-21 12:35:03

标签: android api popup position anchor

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

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兼容?

我想我可以通过修改我的应用程序风格来解决这个问题,但我不知道具体如何。顺便说一句,这可能会影响应用程序的所有PopupWindows,这不是问题,我只有那个。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您需要使用PopupWindowCompat

PopupWindowCompat.setOverlapAnchor(this.navigationMenuPopupWindow,true);

请注意,{21}之前PopupWindowCompat.setOverlapAnchor没有实现。