6

我在滚动视图中有一个 webview,当 Activity 加载时,一旦 webview 完成“loadData”,它就会强制我的滚动视图到底部(webview 所在的位置)。我如何防止这种情况发生?我已经尝试过了,但它会上下跳动屏幕,这是我不想要的:

ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll);  
scroll.post(new Runnable()   
{  
    @Override  
    public void run()   
    {  
       ScrollView scroll = (ScrollView)findViewById(R.id.detailsScroll);  
       scroll.fullScroll(ScrollView.FOCUS_UP);  
    }  
});  
4

4 回答 4

10

fhucho 的答案是可以阻止 webview 滚动到底部。但是你会失去轨迹球等的所有可访问性。所以我发现了一个改进:

public class MyScrollView extends ScrollView {

    @Override 
    public void requestChildFocus(View child, View focused) { 
        if (focused instanceof WebView ) 
           return;
    super.requestChildFocus(child, focused);
    }
}

希望能帮助到你 !

于 2012-05-29T12:14:15.627 回答
5

使用此方法创建自定义 ScrollView:

@Override
public void requestChildFocus(View child, View focused) {
    if (child instanceof WebView) return;
}
于 2012-02-29T00:27:56.397 回答
2

对于焦点相关的问题,我发现这样做效果更好,将这些添加到 XML 中的 WebView 中:

    android:focusable="false"
    android:focusableInTouchMode="false"

尽管对于提出的实际问题,只需添加另一个默认获得焦点的视图,而不是 WebView,应该可以解决该问题。我认为像我这样的其他人在尝试使用 ScrollView 中的 WebView 处理其他一般问题时可能会发现这一点。将上述内容添加到 XML 不会阻止 WebView 中的超链接工作。

于 2015-06-24T19:47:38.447 回答
1

将此添加到您的主布局中

android:descendantFocusability="blocksDescendants"

于 2015-10-29T19:32:18.543 回答