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 и панель не может свернуться.