Android WebView requestFocus:如何防止滚动到顶部?

时间:2016-04-28 14:54:19

标签: android scroll focus android-webview autoscroll

有没有办法阻止Android WebView在收到requestFocus时将其内容滚动到顶部?

我需要在Activity中操作多个图层,更改它们之间的焦点。但是,使用requestFocus将焦点移回WebView会导致WebView跳转到它正在显示的HTML页面的顶部。虽然我之后可以重新定位它,但这样做会抛弃正在处理的其他事件的顺序,从而为该代码增加了更多的复杂性。更简单的解决方案就是阻止WebView将其内容内容重新定位在应该只是简单的焦点更改上。有没有办法做到这一点? (我已尝试覆盖onOverScrolledonScrollChanged,但这些似乎不是由requestFocus上的WebView执行的滚动调用的。)

2 个答案:

答案 0 :(得分:0)

经过多次尝试

WebSettings webSettings = mWebView.getSettings();
webSettings.setNeedInitialFocus(false);

setNeedInitialFocus(false)可以解决问题。

答案 1 :(得分:0)

scrollTo中覆盖WebView

public class MyWebView extends WebView{
    public boolean requestingFocus = false;  // requestFocus() is executing at the moment

    @Override
    public void scrollTo(int x, int y){
        if(requestingFocus)  // ignore such call
            requestingFocus = false;
        else
            super.scrollTo(x, y);
    }
}

然后在调用requestFocus()时添加以下行:

myWebView.requestingFocus = true;
myWebView.requestFocus();

因此,将WebView滚动到顶部的scrollTo调用将被忽略。