WebView 禁止上下左右滑动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hana_one/article/details/81348049

最近做项目需要使用到webview加载网页,需要的内容都在网页的最上方部分,但webview 加载的时候会把网页下面空白区域页加载进来,滑动上去就看不到需要的部分了, 刚开始想到两种解决思路:

1.通过设置网页的高度为所需要内容的高度.
2.通过对webview 设置.
第一种:通过设置网页的高度为所需要内容的高度.

先贴出html 中的内容:

<body>
 <div id="root">
     <div id="alphaTab" data-file="files/WithoutFiliman.gp5" ></div>
 </div>
</body>

当把html 的 bady 的高度设置为 alphaTab 的高度时,也并没有什么效果。

第二种:通过对webview 设置.

开始时候首先找webview现有的API能不能实现,找到一下的几个相关滚动的API:

 webView.setScrollContainer(false);
 webView.setVerticalScrollBarEnabled(false);
 webView.setHorizontalScrollBarEnabled(false);

虽说上面的都带有scroll ,但并不是与滚动相关的,还是无法解决问题。

后来就想着重写webview ,终于用下面的方法解决了问题:

public class MyWebView extends WebView{
    public MyWebView(Context context) {
        super(context);
    }
​
    public MyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
​
    public MyWebView(Context context, AttributeSet attrs, int defStyleAttr){
        super(context, attrs, defStyleAttr);
    }
    //重写onScrollChanged 方法
    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        scrollTo(l,0);
    }
}  

可以看到上面重写了onScrollChanged 方法 , 当webview 滚动的时候回调,在方法中我们可以调用scrollTo(x,y) 来控制其滚动到某个位置。

禁止左右滚动:在onScrollChanged中设置 scrollTo(0,y)
禁止上下滚动:在onScrollChanged中调用 scrollTo(x,0)

猜你喜欢

转载自blog.csdn.net/Hana_one/article/details/81348049