3

hinzuzufügen, muss ich mit zwei ScrollView s arbeiten. Eine innerhalb AppBarLayout und die andere außerhalb.Ist es möglich, eine ScrollView zu einem AppBarLayout

Für die Außenseite ScrollView, verwende ich eine NestedScrollView mit der appbar_scrolling_view_behavior und es funktioniert richtig.

Für innen, ich eine Scrollview mit app:layout_scrollFlags="scroll|enterAlways|snap"

Mein Problem bin ist, dass die NestedScrollView die ScrollView Ereignisse außer Kraft zu setzen scheint, auch wenn ich die ScrollView Bereich berühren, wird die NestedScrollView derjenige scrollt das ist.

Kann ich das irgendwie machen?

Siehe den Code unten:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="200dp" 
      android:background="@android:color/white" 
      app:layout_scrollFlags="scroll|enterAlways|snap"> 

      <TextView     
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 

     </ScrollView>  
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <TextView     
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 

    </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout> 

Antwort

3

Vielleicht wird diese Arbeit:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"  
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:background="@android:color/white" 
     app:layout_scrollFlags="scroll|enterAlways|snap" 
     android:id="@+id/scr"> 

     <TextView     
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

    </ScrollView>  
</android.support.design.widget.AppBarLayout> 

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <TextView     
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

</android.support.v4.widget.NestedScrollView> 

ScrollView scr = (ScrollView) findViewById(R.id.scr); 
scr.setOnTouchListener(new ScrollView.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     int action = event.getAction(); 
     switch (action) { 
     case MotionEvent.ACTION_DOWN: 
      // Disallow ScrollView to intercept touch events. 
      v.getParent().requestDisallowInterceptTouchEvent(true); 
      break; 

     case MotionEvent.ACTION_UP: 
      // Allow ScrollView to intercept touch events. 
      v.getParent().requestDisallowInterceptTouchEvent(false); 
      break; 
     } 

     // Handle ScrollView touch events. 
     v.onTouchEvent(event); 
     return true; 
    } 
}); 

Es wird die Scroll-Methode in Scroll-Ansicht außer Kraft setzen.