Как отключить GridView от прокрутки с помощью PopupWindow - PullRequest
0 голосов
/ 02 февраля 2020

В моем GridView я показываю всплывающее окно, когда пользователь делает длинный тап. Но согласно документации, если нет места, всплывающее окно пытается прокрутить родителя представления. И это то, чего я хочу избежать.

showAsDropDown (View anchor) Если на экране недостаточно места для отображения * всплывающего окна в полном объеме, этот метод пытается найти родительский скролл * view to scroll.

Я посмотрел документацию 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;
}

1 Ответ

0 голосов
/ 11 февраля 2020

Для будущих читателей, вот как я решил, что 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);
    }
}
...