user10611404
user10611404

Reputation:

WebView with fixed Height

I have a container Webview which plays videos.I have fixed the size of container inside xml file by 200dp. Webview loads data by loading html format. Video is playing smoothly but problem is video height doesn't fit to the given size and user can drag video vertically up and down.Videos width is adjusting according to device size.But the problem is with adjusting video height.

xml code for container

 <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 code to init webview and load data

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 code to load Html data

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

Sp what i am looking for is how to fit the video content inside given height, so that user wont be able to drag the video vertically?.It should adjust the video within the view's height.

Upvotes: 0

Views: 1468

Answers (1)

Rahul Khurana
Rahul Khurana

Reputation: 8835

You've given style='width:100%; height:300' in your html code. Try replacing it with height:100% or try reducing the height to 200px. :)

Upvotes: 1

Related Questions