滚动webview时如何隐藏工具栏? 我知道,webview必须在NestedScrollView和CoordinatorLayout工具栏中 - 在AppBarLayout中。但我真的不能这样做。
如果有人可以帮助我,我将非常感激。
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/main_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/custom_toolbar_size" />
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/custom_tablayout_size"
android:layout_gravity="bottom"
android:background="@color/toolbarColor"
app:tabIndicatorHeight="0dp"
>
<android.support.design.widget.TabItem
android:id="@+id/ti_arrow_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_arrow_back" />
<android.support.design.widget.TabItem
android:id="@+id/ti_arrow_forward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_arrow_forward" />
<android.support.design.widget.TabItem
android:id="@+id/ti_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_update" />
<android.support.design.widget.TabItem
android:id="@+id/ti_inset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_inset" />
<android.support.design.widget.TabItem
android:id="@+id/ti_star"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_star_border" />
</android.support.design.widget.TabLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/custom_tablayout_size"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/custom_toolbar_size"
android:background="@color/toolbarColor"
android:paddingTop="2dp"
app:layout_scrollFlags="scroll|enterAlways" />
答案 0 :(得分:0)
您尝试过的解决方案无效,因为您的WebView位于NestedScrollView中。由于这个原因,WebView的OnScrollListener也无法正常工作。
因此,请使用NestedScrollView侦听器,然后使用getSupportActionBar().hide();
和getSupportActionBar().show();
隐藏或显示工具栏。
从这里复制:https://stackoverflow.com/a/37630070/1860982
final String TAG = "ScrollPosition";
NestedScrollView nestedScrollView = (NestedScrollView) findViewById(R.id.scrollNextView);
if (nestedScrollView != null) {
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY > oldScrollY) {
getSupportActionBar().hide();
Log.i(TAG, "Scroll DOWN");
}
if (scrollY < oldScrollY) {
Log.i(TAG, "Scroll UP");
}
if (scrollY == 0) {
getSupportActionBar().show();
Log.i(TAG, "TOP SCROLL");
}
if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
Log.i(TAG, "BOTTOM SCROLL");
}
}
});
}
答案 1 :(得分:-1)
您可以使用设计库的CoordinatorLayout和NestedScrollView在没有任何Java代码的情况下执行此操作。这是你如何做到的。