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