Android WebView 禁止上下左右滚动


最近做项目需要使用到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)

- 禁止上下左右滚动:在onScrollChanged中调用 scrollTo(0,0)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM