So verwende ich die Sliding Up Panel Library in meiner Anwendung, und ich versuche, eine ScrollView
innerhalb der Schiebeplatte zu implementieren. Da sowohl das Schiebefenster als auch das ScrollView durch vertikale Scrolls gesteuert werden, habe ich einige Probleme.Scroll-Ereignis von gleitender Ansicht zu ScrollView übertragen - Schiebe-Panel mit ScrollView wie Google Maps
Ich habe es teilweise funktioniert, indem ich den dragview des Panels änderte, sobald das Panel ganz nach oben geschoben wurde und wenn die ScrollView nach oben gescrollt wurde.
Das Problem, das ich jetzt mit Blick auf bin ist, dass beim Scrollen das Panel das Scrollen nach oben überträgt sich nicht auf die Scrollview, wie es in Google Maps der Fall ist. wenig schwer zu erklären, so das Video hier: www.youtube.com/watch?v=9MUsmQzusX8&feature=youtu.be
Dies ist die Panel Dia Hörer:
...
slidePanel.setEnableDragViewTouchEvents(true);
slidePanel.setPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
// Change the dragview to panelheader when panel is fully expanded
// I'm doing this here instead of in onPanelExpanded,
// because onPanelExpanded first gets called once scroll
// is released.
if (slideOffset <= 0) {
slidePanel.setDragView(layoutPanelTop);
}
// If the panel is not fully expanded set the whole
// panel as dragview
else if(slideOffset > 0) {
slidePanel.setDragView(layoutPanel);
}
}
}
@Override
public void onPanelExpanded(View panel) {
// layout.setDragView(layoutPanelTop);
panelCollapsed = false;
panelExpanded = true;
panelAnchored = false;
Log.v("TAG, "panelExpanded");
}
@Override
public void onPanelCollapsed(View panel) {
slidePanel.setDragView(layoutPanel);
panelCollapsed = true;
panelExpanded = false;
panelAnchored = false;
Log.v(TAG, "panelCollapsed");
}
@Override
public void onPanelAnchored(View panel) {
slidePanel.setDragView(layoutPanel);
panelCollapsed = false;
panelExpanded = false;
panelAnchored = true;
Log.v(TAG, "panelAnchored");
}
});
Und ich habe durch die Erweiterung Scroll einen voll funktionsfähigen Scroll Zuhörer zu schaffen verwaltet, die Scroll-Richtung und onDown und onUp Bewegungsereignisse kann erkennen:
private boolean atScrollViewTop = false;
@Override
public void onScrollChanged(int scrollY) {
scrollY = Math.min(mMaxScrollY, scrollY);
if (scrollY <= 0) {
Log.v("myTag", "You at scrollview top");
atScrollViewTop = true;
} else {
atScrollViewTop = false;
}
mScrollSettleHandler.onScroll(scrollY);
switch (mState) {
case STATE_SCROLL_UP:
if (panelExpanded && atScrollViewTop) {
slidePanel.setDragView(layoutPanel);
} else {
slidePanel.setDragView(layoutPanelTop);
}
Log.v("myTag", "scrolling up");
break;
case STATE_SCROLL_DOWN:
slidePanel.setDragView(layoutPanelTop);
Log.v("myTag", "scrolling down");
break;
}
}
@Override
public void onDownMotionEvent() {
}
@Override
public void onUpOrCancelMotionEvent() {
}
ich habe mit dieser den letzten zwei Tage zu kämpfen .. So hoffen wirklich auf einigen Zeigern auf am wenigsten. Vielen Dank im Voraus. Grüße Jakob Harteg.
Jakob - Hattest du Glück dabei zu arbeiten? Jeder Rat würde sehr geschätzt werden! – Kyle
@Kyle nein, leider nicht. Verbringe Stunden damit, Stunden zu versuchen, aber nie weiter als das, was das Video zeigt.Also habe ich mein Layout neu gestaltet. – Jakob
@ Jakob- Eigentlich habe ich Listview in SlidingUpPanel. Auf jedem Listenansicht-Element befindet sich eine Schaltfläche. Ich möchte Panel auf Knopf klicken, klicken Sie auf Detailansicht. Ich denke setDragView() ist eine Methode zum Reduzieren von Panel. Aber ich kann nicht verstehen, wie kann ich in meiner Adapterklasse implementieren? Bitte sag mir wie ich das machen kann. Danke im Voraus. – Lawrance