无法在WebView 4.4.2中滚动内容

时间:2015-04-26 16:03:34

标签: android scroll webview

在Android 4.4.2的WebView中测试我的Web应用程序时,滚动对任何元素都不起作用。没有调用javascript“onscroll”事件。

但是,从Android 5开始,它运行正常。

编辑:我不滚动的元素具有基于百分比的高度(即“高度:100%”),但是当我改为基于像素(即“高度:50px”)时,滚动有效。因此,它必须与WebView 4.4.2呈现div的方式有关。

1 个答案:

答案 0 :(得分:0)

滚动问题的一个可能解决方案是将您的webview放入滚动视图。这样webview就像它的内容一样大,滚动由滚动视图完成。但滚动事件不会在您的javascript中触发,您需要使您的滚动视图可观察并通过javascript界面​​发送这些事件。也许有人会为你提供一个更好的。

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;

public class ObservableScrollView extends ScrollView {

    public interface OnObservableScrollViewScrolled {
        public void onObservableScrollViewScrolled(ObservableScrollView sv, int l, int t, int oldl, int oldt);
    }

    private OnObservableScrollViewScrolled listener;

    public ObservableScrollView(Context context) {
        this(context, null, -1);
    }

    public ObservableScrollView(Context context, AttributeSet attrs) {
        this(context, attrs, -1);
    }

    public ObservableScrollView(Context context, AttributeSet attrs, int style) {
        super(context, attrs, style);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        // Notify external listener
        if (listener != null)
            listener.onObservableScrollViewScrolled(this, l, t, oldl, oldt);
    }

    public void setScrollListener(OnObservableScrollViewScrolled callback) {
        this.listener = callback;
    }
}