以下は、私のアプリケーションの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>
よろしく