webview迫使我的scrollview到底

时间:2010-12-30 22:29:44

标签: android android-webview android-scrollview

我在滚动视图中有一个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 个答案:

答案 0 :(得分:10)

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

public class MyScrollView extends ScrollView {

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

希望它有所帮助!

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

将此添加到您的主要布局

<强>机器人:descendantFocusability =&#34; blocksDescendants&#34;