【问题标题】:Android WebView Video after closing fullscreen view, webview auto scrolls关闭全屏视图后的Android WebView Video,webview自动滚动
【发布时间】:2017-05-10 23:01:42
【问题描述】:

我正在使用WebView 来显示包含文本和视频内容的网页。

它按预期正确加载和显示视频。

但是当我进入全屏视频视图时(我实现了给定here 的全屏视频视图),然后返回到WebViewWebView 一定程度的自动滚动。

我该如何解决这个问题?

请提出一些想法/链接。

【问题讨论】:

  • 请显示xml代码!
  • 您使用的是哪个目标 SDK?我在 SDK 24 (Android N) 上测试了您指出的示例,但看不到自动滚动问题。
  • 请提供一些你的xml的代码。您在哪里创建 webview
  • 我没有找到问题,如果你想恢复你的滚动然后你可以查看这个链接stackoverflow.com/questions/40020820/…
  • 我通过在使用 JavaScript 进入全屏之前存储网页的滚动位置然后在从全屏滚动页面到存储的位置之后存储网页的滚动位置来做到这一点(存储滚动位置和滚动到存储的位置都在使用JavaScript)。

标签: android html webview html5-video


【解决方案1】:

我已经在使用兼容的 ScrollChangedListener。所以我决定在 onHideCustomView 之后的一段时间内将视图滚动回这个监听器。

网页浏览:

public interface OnScrollChangedListener {
    void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY);
}

    public void SafeScrollTo(int x, int y) {
        OnScrollChangedListener mScrollChanged = mOnScrollChangeListener;
        mOnScrollChangeListener =null;
        scrollTo(x, y);
        mOnScrollChangeListener =mScrollChanged;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if(mOnScrollChangeListener !=null)
            mOnScrollChangeListener.onScrollChange(this,l,t,oldl,oldt);
    }

    public void setOnScrollChangedListener(OnScrollChangedListener onSrollChangedListener) {
        mOnScrollChangeListener =onSrollChangedListener;
    }

    OnScrollChangedListener mOnScrollChangeListener;

活动:

mWebview.setOnScrollChangedListener((v, x, y, oldx, oldy) -> {
                ArticleWebView webview = (ArticleWebView) v;
                if(CustomViewHideTime>0 && System.currentTimeMillis()-CustomViewHideTime<350){
                    webview.SafeScrollTo(oldx, oldy);
                    return;
                }});

WebChrome客户端:

        @Override
        public void onHideCustomView() {
            CustomViewHideTime = System.currentTimeMillis();
            //todo delay and set CustomViewHideTime to 0
        }

这可以正常工作。

【讨论】:

  • 这个解决方案有一个问题,就是 CustomViewHideTime 必须声明为 final 才能在 onHideCustomeView 中使用。你是怎么解决的?
猜你喜欢
  • 1970-01-01
  • 2013-12-11
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多