Bewegungsereignis an übergeordnete Bildlaufansicht übergeben, wenn Listenansicht oben / unten

Ich habe einListView in einemScrollView, um Kommentare anzuzeigen, und ich möchte Folgendes tun:

Wenn der Benutzer nach unten streicht, wird zuerst dasScrollView sollte vollständig nach unten scrollen, da sich die Liste unten befindet. Sobald es vollständig ausgefallen ist, wird dasListiew sollte mit dem Scrollen beginnen.

Auch wenn der Benutzer einen Bildlauf durchführt, wird zuerst dasListView (Reihenfolge hier umgekehrt!) sollte nach oben scrollen, bevor dasScrollView beginnt zu scrollen.

isher habe ich folgendes gemacht:

listView.setOnTouchListener(new View.OnTouchListener() {
        // Setting on Touch Listener for handling the touch inside ScrollView
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            // If going up but the list is already at up, return false indicating we did not consume it.
            if(event.getAction() == MotionEvent.ACTION_UP) {
                if (listView.getChildCount() == 0 && listView.getChildAt(0).getTop() == 0) {
                    Log.e("Listview", "At top!");
                    return false;
                }
            }

            // Similar behaviour but when going down check if we are at the bottom.
            if( event.getAction() == MotionEvent.ACTION_DOWN) {
                if (listView.getLastVisiblePosition() == listView.getAdapter().getCount() - 1 &&
                        listView.getChildAt(listView.getChildCount() - 1).getBottom() <= listView.getHeight()) {
                    Log.e("Listview","At bottom!");
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                    return false;
                }
            }
            v.getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    });

Die Protokolle werden im richtigen Moment ausgelöst, jedoch wird dasScrollView bewegt sich nicht, obwohl ich false zurückgebe.

Ich habe auch versucht, @ hinzuzufügv.getParent().requestDisallowInterceptTouchEvent(false); zu den Anweisungen, aber das hat auch nicht funktioniert.

Wie kann ich es zum Laufen bringen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage