固定高度的WebView

时间:2019-03-27 09:26:36

标签: android webview

我有一个播放视频的容器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>

用于初始化Webview并加载数据的xml代码

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);

用于加载HTML数据的xml代码

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();
}

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

1 个答案:

答案 0 :(得分:0)

您给了 style ='width:100%;高度:300'。尝试将其替换为 height:100%,或尝试将高度降低至200px。 :)

相关问题