SlidingUpPanelLayout und ScrollView

Ich habe einSlidingUpPanelLayout Das enthält ein Bild als Draufsicht und einen Ansichts-Pager, der verschoben werden muss. Dasviewpager hat 3 Fragmente und zwei davon sind Listenansichten. Ich möchte also in der Lage sein, den Ansichts-Pager beim Hochziehen zu erweitern, und wenn der Ansichts-Pager hochgefahren ist, möchte ich in der Lage sein, den Bildlauf durchzuführenscrollviews in den Fragmenten. Aber beim runterziehen auf diescrollview falls es nicht mehr zum scrollen gibt, möchte ich das einklappen lassenviewpager. Also bitte vorschlagen, wie man das machtSlidingUpPanelLayout beim Ziehen der Scrollansicht minimieren, falls kein Inhalt mehr zum Scrollen vorhanden ist?

Hier poste ich einen Teil meines Codes: Ich habe versucht, die Berührungsereignisse zu erfassen und das SlidingUpPanel zu überschreibenonInterceptTouchEvent funktionieren wie folgt:

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

Also, wenn das SlidingUpPanelLayout erweitert wird, setze ichisHandled = false. Wenn das slideUpPanelLayout erweitert wird, werden alle Berührungsereignisse an seine untergeordneten Ansichten übergeben.

Und ich habe auch gesagtonTouchEvent in demscrollView, um die zu entsperrenSlidingUpPanelLayout.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;
}

Das funktioniert aber nicht. Das Problem ist, dass einmal diescrollview.onTouch Veranstaltung ist inMotionEvent.ACTION_MOVE SlidingUpPanelLayout.onInterceptTouchEvent wird nicht gerufen.SlidingUpPanelLayout.onInterceptTouchEvent heißt nachMotionEvent.ACTION_CANCEL. Dies bedeutet, dass das Ereignis nicht an das SlidingUpPanelLayout übergeben werden kann und das Bedienfeld nicht ausgeblendet werden kann.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage