Webview的滚动问题

时间:2018-09-30 14:48:18

标签: android xml android-layout layout webview

尝试了太多次但失败了,这是我尝试过的代码

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


<WebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainweb">
</WebView>

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

启动应用程序时,嵌套滚动视图可以正常工作,但有时Webview不能滚动。

我在嵌套滚动视图中插入了webview以隐藏片段活动中的工具栏

过去7个月来我一直在解决这个问题,因此将为您提供任何帮助

2 个答案:

答案 0 :(得分:0)

WebView有自己的滚动,因此不需要NestedScrollView。

因为NestedScrollView Webview出现滚动问题。

请尝试以下代码作为参考:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="0dp" />
</RelativeLayout>

您可以根据需要添加webview的父级,例如LinearLayout,ConstraintLayout等。

答案 1 :(得分:0)

您需要在build.gradle文件中添加此依赖项

implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0'

在您的java类中

ObservableWebView webView;

webView.setScrollViewCallbacks(new ObservableScrollViewCallbacks() {
        @Override
        public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {

        }

        @Override
        public void onDownMotionEvent() {

        }

        @Override
        public void onUpOrCancelMotionEvent(ScrollState scrollState) {


            if (scrollState == ScrollState.UP) {

                ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
                // hide your action bar
            } else if (scrollState == ScrollState.DOWN) {
                ((AppCompatActivity)getActivity()).getSupportActionBar().show();
                // show your action bar
            }


        }
    });