【问题标题】:How to disable the GridView from being scrolled by a PopupWindow如何禁用 GridView 被 PopupWindow 滚动
【发布时间】:2020-02-02 18:45:46
【问题描述】:

在我的 GridView 中,当用户长按时,我会显示一个弹出窗口。但根据文档,如果没有空间,Popupwindow 会尝试滚动视图的父级。 而这正是我想要避免的。

showAsDropDown(查看锚点) 如果屏幕上没有足够的空间显示 * 整个弹出窗口,这个方法试图找到一个父滚动 * 滚动查看。

我查看了 Popupwindow 文档,发现以下方法可以实现我的目标(避免滚动父级),但不支持应用使用。

/**
 * Allow PopupWindow to scroll the anchor's parent to provide more room
 * for the popup. Enabled by default.
 *
 * @param enabled True to scroll the anchor's parent when more room is desired by the popup.
 */

@UnsupportedAppUsage
void setAllowScrollingAnchorParent(boolean enabled) {
    mAllowScrollingAnchorParent = enabled;
}

【问题讨论】:

    标签: android gridview android-gridview


    【解决方案1】:

    对于未来的读者,这是我解决 GridView 被 Popupwindow 强制滚动的方法。

    在显示弹出窗口之前,我找不到禁用 GridView 滚动的方法。所以我确保 Popupwindow 不会出现在底部边缘附近。

    public void showDropDownMenu(View aView, PopupWindow aPopupWindow, int aMnuItemsNum){
        int[] loc = new int[2];
        aView.getLocationOnScreen(loc);
    
        int popHeight = (toPixels(getMnuItemHeightDip()) * aMnuItemsNum) + aView.getHeight();
    
        if(getResources().getDisplayMetrics().heightPixels - loc[1] > popHeight){
            aPopupWindow.showAsDropDown(aView);
        } else {
            aPopupWindow.showAsDropDown(aView, 0, - popHeight, Gravity.START | Gravity.TOP);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多