【问题标题】:WebView with fixed Height具有固定高度的 WebView
【发布时间】:2019-03-27 19:50:37
【问题描述】:

我有一个播放视频的容器Webview。我已将 xml 文件中的容器大小固定为 200dp。 Webview 通过加载 html 格式加载数据。视频播放流畅,但问题是视频高度不适合给定大小,用户可以垂直上下拖动视频。视频宽度正在根据设备大小调整。但问题在于调整视频高度。

容器的xml代码

 <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="200dp">
<WebView
  android:id="@+id/myWeb"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:alwaysDrawnWithCache="true"
/>
<ProgressBar
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true"
  android:id="@+id/progressBar3"
/>
</RelativeLayout>

xml代码初始化webview并加载数据

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setSaveFormData(false);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

webView.clearFormData();
webView.clearCache(true);
webView.clearHistory();
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
        view.clearHistory();
        }
    @Override
    public void onPageFinished(WebView view, String url) {
         super.onPageFinished(view, url);
         webView.setVisibility(View.VISIBLE);
         progressBar.setVisibility(View.GONE);
        }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
         view.clearFormData();
         view.clearHistory();
         view.clearCache(true);
         super.onPageStarted(view, url, favicon);
         webView.setVisibility(View.VISIBLE);
         progressBar.setVisibility(View.VISIBLE);
        }
    });
    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setBuiltInZoomControls(false);
    webView.getSettings().setDisplayZoomControls(false);
    webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);

    String htmlData=getHtmlData(model.getVideo_url());    
    webView.loadData(htmlData, "text/html", null);

xml代码加载Html数据

private String getHtmlData(String imageUrl) {
    StringBuilder stringBuilder = new StringBuilder();

    stringBuilder.append(
            "<!DOCTYPE html>\n" +
                    "<html>" +

                    "<meta charset=\"UTF-8\">\n" +
                    "<meta name='viewport' content='width=device-width, initial-scale=1'>" +
                    "<head>" +
                    "  <title title='Index'></title>" +
                    "</head>" +


                    "<body bgcolor='#000'>");


    stringBuilder.append(
            "<script>\n" +
                    "function dismissProgress() {\n" +
                    "Android.dismissProgress(0);" +
                    "}\n" +
                    "</script>\n");


    stringBuilder.append("<img id='imgsrc' onload='dismissProgress();'  src=" + imageUrl + " alt='No Video Found' class='w3-image' class='w3-image' style='width:100%; height:300' align='center'  height=300 />");


    stringBuilder.append("</body>" +
            "</html>");


    return stringBuilder.toString();
}

我正在寻找的是如何将视频内容放在给定的高度内,以便用户无法垂直拖动视频?它应该在视图的高度内调整视频。

【问题讨论】:

  • 可以隐藏网页中的所有其他内容,只显示视频div
  • 只有进度条会在 onPageStarted 被调用时消失
  • 您在 html 中给出了固定高度。见 style='width:100%;高度:300'
  • 是的,我知道,但视频仍然不适合给定的高度。
  • 不应该是 height:100% 吗??

标签: android webview


【解决方案1】:

你给了 style='width:100%; height:300' 在您的 html 代码中。尝试将其替换为 height:100% 或尝试将高度降低到 200px。 :)

【讨论】:

    猜你喜欢
    • 2012-12-28
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多