Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 弹出窗口退出屏幕';s底边界_Android_Android Popupwindow - Fatal编程技术网

Android 弹出窗口退出屏幕';s底边界

Android 弹出窗口退出屏幕';s底边界,android,android-popupwindow,Android,Android Popupwindow,这是一个简化的代码,用于在长时间单击GridView项目时显示弹出窗口 当最右边的项目出现时,弹出窗口被调整到屏幕内 但当项目靠近屏幕底部时,弹出窗口被裁剪(部分在屏幕外)。 怎么把这个修好 PopupWindow mDropDownMenu= new PopupWindow(list, WRAP_CONTENT, WRAP_CONTENT); mDropDownMenu.showAsDropDown(aView); aView是GridView项 文档中提到了showAsDropDown(

这是一个简化的代码,用于在长时间单击GridView项目时显示弹出窗口

当最右边的项目出现时,弹出窗口被调整到屏幕内

但当项目靠近屏幕底部时,弹出窗口被裁剪(部分在屏幕外)。

怎么把这个修好

PopupWindow mDropDownMenu= new PopupWindow(list, WRAP_CONTENT, WRAP_CONTENT);

mDropDownMenu.showAsDropDown(aView);
aView是GridView项

文档中提到了showAsDropDown(视图锚定)


但它总是固定在左下角,而不是左上角。

找到了解决方案。您必须测量视图并在
PopupWindow
上设置测量

...
private fun showPopupWindow() {
        val popupView = layoutInflater.inflate(R.layout.standard_popup_window, null)
        popupView.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        PopupWindow(popupView, popupView.measuredWidth, popupView.measuredHeight).apply {
            setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            isTouchable = true
            isFocusable = true
            overlapAnchor = true
            width = popupView.measuredWidth
            height = popupView.measuredHeight
            contentView = popupView
            showAsDropDown(fragment_person_details__description)
        }
...

事实证明,我必须设置下拉菜单的高度来避免这个问题

List<DropDownListItem> items;

dropDown.setHeight( toPixels( 30 * items.size() ) );
列表项;
下拉.setHeight(toPixels(30*items.size());

请提供一个屏幕截图以便更好地理解。我也有同样的问题。这里有一篇老文章,但没有给出有效的解决方案。我还尝试在API 22和25上使用PopupWindowCompat。没有区别。问题仍然存在。如果显式设置高度和宽度,它会起作用:PopupWindow(popupView,100100)。应用{setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))isTouchable=true isFocusable=true showAsDropDown(片段\人员\详细信息\描述)}可能重复感谢Bohsen,但这是Android代码吗?几乎所有的代码都没有定义,包括R.layout.standard_popup_window.setOverlappanchor(布尔值)需要API 23,我的目标是API 16+,这是使用Android kotlin扩展的Android kotlin代码。抛锚吧,没关系。应该在没有它的情况下工作。R.layout.standard_popup_窗口正是我想要充气到弹出窗口中的布局window@Jack有一个关于这个的PopupWindowCompat课程。
List<DropDownListItem> items;

dropDown.setHeight( toPixels( 30 * items.size() ) );