在布局(线性,垂直)层次结构中,我有几个视图,其中一个是WebView.它们都有相同的参数:
android:layout_width="fill_parent"
android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)
对于所有视图,正确处理元素之间的间距,但对于Webview,在显示的文本内部之后有很多空格.
我使用布局在活动的"onCreate"方法中设置webview的(HTML)文本.
有没有办法让webview自行调整大小,以匹配其内容大小?
顺便说一下,左边的空间因设备而异(模拟器与Milestone vs Hero)
任何的想法?谢谢
小智 21
我确信现在为时已晚,但添加了适合我的方法,以防有人来这里寻找解决方案.
一旦页面完成加载,我正在注入一个javascript方法来回调我JS钩子.在这种方法中我传递的大小.
private void setupWebView() {
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
});
webView.addJavascriptInterface(this, "MyApp");
}
@JavascriptInterface
public void resize(final float height) {
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
}
});
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我有同样的问题。我通过改变 WebView 的可见性来解决。
mWebView.setVisibility(View.GONE);
mWebView.loadData(".....");
mWebView.reload();
mWebView.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
经过几个小时的搜索和尝试,我找到了最简单的工作解决方案。只需将其称为“重绘”:
webView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)
对于我的 webview,它在 scrollView 中完美运行。如果您不想使用 WRAP_CONTENT,您可以使用您自己的参数。
| 归档时间: |
|
| 查看次数: |
47890 次 |
| 最近记录: |