SlidingUpPanelLayout и ScrollView

у меня естьSlidingUpPanelLayout это держит изображение как вид сверху, и пейджер представления, который должен скользить.viewpager имеет 3 фрагмента, и два из них являются списками. Поэтому я хочу иметь возможность расширять пейджер при поднятии, и как только пейджер открывается, я хочу прокручиватьscrollviews внутри фрагментов. Но при сносе наscrollview в случае, если больше нет прокрутки, я хочу начать сворачиватьviewpager, Поэтому, пожалуйста, предложите, как сделатьSlidingUpPanelLayout Свернуть при извлечении прокрутки на случай, если больше нет содержимого для прокрутки?

Здесь я публикую часть своего кода: я попытался перехватить события касания и переписать SlidingUpPanelonInterceptTouchEvent функционировать следующим образом:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if (isHandled) {
        Log.i("interceptToch", "HEREEE");
        return onTouchEvent(ev);
    }
    return false;
}

Поэтому, когда SlidingUpPanelLayout развернут, я установилisHandled = false, Таким образом, при расширении slideUpPanelLayout все сенсорные события передаются его дочерним представлениям.

И я также положилonTouchEvent вscrollView, чтобы разблокироватьSlidingUpPanelLayout.onInterceptTouchEvent:

public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    if (action == MotionEvent.ACTION_DOWN) {
        scroll = 0;
        y = event.getY();
    } else if (action == MotionEvent.ACTION_MOVE) {
        if (scroll_view_summary.getScrollY() == 0 && event.getY() > y) {
            scroll = scroll + 1;
            if (scroll > 2) {
                // the user has pulled the list and the slidingUpPanelLauout 
                // should be able to handle the toch events again
                SlidingUpPanelLayoutCustom las = 
                    ((SaleDetailsActivity) getActivity()).getLayout();
                las.setHandle(true);
                scroll = 0;
                return false;
            }
        }
    }
    return false;
}

Но это не работает. Проблема в том, что когда-тоscrollview.onTouch событие вMotionEvent.ACTION_MOVE SlidingUpPanelLayout.onInterceptTouchEvent не называется.SlidingUpPanelLayout.onInterceptTouchEvent называется послеMotionEvent.ACTION_CANCEL, Это означает, что событие не может быть передано SlidingUpPanelLayout и панель не может свернуться.

Ответы на вопрос(6)

Ваш ответ на вопрос