3

我需要使用兩個ScrollView s。一個在AppBarLayout裏面,另一個在裏面。是否可以添加ScrollView到AppBarLayout

對於外部ScrollView,我使用了NestedScrollViewappbar_scrolling_view_behavior,它工作正常。

對於裏面,我使用的是Scrollviewapp:layout_scrollFlags="scroll|enterAlways|snap"

我的問題是,NestedScrollView似乎覆蓋ScrollView事件,即使我碰ScrollView區,NestedScrollView是一個滾動。

有什麼辦法可以做到嗎?

請參見下面的代碼:

<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> 

回答

3

也許這將工作:

<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; 
    } 
}); 

它會覆蓋在滾動視圖滾動方式。

相關問題