6

以下は、私のアプリケーションのactionBar/toolbar/tabBarとnestedScrollViewの内部でViewPager(webView)を使用して正しい動作を処理するためのコードです。 ViewPagerは基本的に通常のWebViewです。NestedScrollViewのみスクロールNestedScrollView

ViewPagerを垂直方向にスクロールできない限り、すべてうまく動作します。 NestedScrollViewのみがスクロールされます。私はFacebookアプリケーションと同じ動作が必要です。ニュースフィード(webView)をスクロールすると、tabBarはツールバーを視界から垂直方向に移動します。

パブリッククラスTouchyWebViewは{

のWebViewを拡張:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".ui.activity.FragmentContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     > 
       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        app:theme="@style/M.Toolbar" 
        app:popupTheme="@style/M.Toolbar.PopupTheme" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_scrollFlags="scroll|enterAlways" 
        > 
       </android.support.v7.widget.Toolbar> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="scrollable" 
      android:visibility="gone" 
      android:background="@color/background" 
      app:background="@color/background" 
      /> 

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

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

    <com.m.ui.util.EdgeScrollViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:visibility="visible" 
     > 

    </com.m.ui.util.EdgeScrollViewPager> 

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

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

だから私のviewPager(WebViewの)をスクロールすることができるようにするためには、私は、WebViewを拡張する新しいクラスを追加しました

public TouchyWebView(Context context) { 
     super(context); 
    } 

    public TouchyWebView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public TouchyWebView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event){ 
     requestDisallowInterceptTouchEvent(true); 
     return super.onTouchEvent(event); 
    } 
} 

スクロール可能なviewPager(webView)の問題を解決します。しかし、NestedScrollViewは静的になり、tabBar /ツールバーを垂直方向にスクロールすることを拒否します。だから、私はwebViewまたはtabBar-toolbarをスクロールしています。 viewPager(webView)とNestedScrollView(tabBar/toolbar)の両方を同時にスクロール可能にするにはどうすればよいですか?

私のWebView

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white"> 

    <com.m.ui.base.TouchyWebView 
     android:id="@+id/web_webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:visibility="visible" /> 

    <LinearLayout 
     android:id="@+id/web_loadingview" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     android:layout_gravity="center"> 

     <ProgressBar 
      style="?android:attr/progressBarStyleLarge" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:indeterminate="true" 
      android:visibility="visible" 
      android:layout_gravity="center"/> 
    </LinearLayout> 

</FrameLayout> 

よろしく

答えて

0

私は同様の問題があったとsetFillViewport (true) で自分のコード

NestedScrollView scrollView = (NestedScrollView) findViewById (R.id.nest_scrollview); 
    scrollView.setFillViewport (true); 

そして内部の一部を、それを解決しましたフラグメント私はリストビューを持っていたandroid:nestedScrollingEnabled="true" ..スクロールの問題を修正しました

関連する問題