【发布时间】: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% 吗??