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

它会覆盖在滚动视图滚动方式。

相关问题