16

我正在使用带有 showAsDropDown(anchor) 的 PopupWindow。当锚点位于屏幕顶部时,它可以正常工作,但是当位于屏幕底部时,什么都没有显示。根据 PopupWindow.showAsDropDown() 的文档,这应该可以工作:

http://developer.android.com/reference/android/widget/PopupWindow.html#showAsDropDown%28android.view.View%29

“在锚定到锚视图左下角的弹出窗口中显示内容视图。如果屏幕上没有足够的空间来完整显示弹出窗口,则此方法会尝试找到要滚动的父滚动视图。如果不能滚动父滚动视图,弹出窗口的左下角固定在锚视图的左上角。”

据推测,弹出窗口总是锚定在锚视图的左下角。我该如何解决?

4

2 回答 2

4

你可以试试这个..可能有帮助

mWindow.showAtLocation(mRootView, Gravity.BOTTOM|Gravity.LEFT, 0, distanceFromTop);
于 2013-12-24T04:29:33.217 回答
0

我知道这是一个旧线程,但我想我会发布我的解决方案。看起来您必须在调用 showAsDropDown()之前显式设置 popupWindow 的宽度和高度。

    menuLayout.measure( View.MeasureSpec.UNSPECIFIED, 
                        View.MeasureSpec.UNSPECIFIED );
    int height = menuLayout.getMeasuredHeight();
    int width = menuLayout.getMeasuredWidth();
    popupMenu.setWidth( width );
    popupMenu.setHeight( height );

    popupMenu.showAsDropDown( clickedCell );

在这种情况下 menuLayout 是 popupWindow 中显示的视图。

于 2019-06-03T15:59:31.623 回答