【问题标题】:android resize webViewandroid调整webView的大小
【发布时间】:2014-02-26 14:08:26
【问题描述】:

我想在后台创建 WebView 并调整其大小,我不会显示它或将其附加到布局中,我只想创建它、调整它的大小并在后台加载内容。
我的问题是,即使在使用 setLayoutParams 调整大小后,HeightWidth 也会得到 0
这是我所做的:

public void createAndResizeWebView(Context context) {

    WebView webView = new WebView(context);

    System.out.println("webView: " + webView.getWidth());
    System.out.println("webView: " + webView.getHeight());

    webView.setLayoutParams(new LinearLayout.LayoutParams(300, 400));

    System.out.println("webView: " + webView.getWidth());
    System.out.println("webView: " + webView.getHeight());
}

我明白了:

webView: 0

webView: 0

webView: 0

webView: 0

任何帮助将不胜感激!

【问题讨论】:

    标签: android webview resize


    【解决方案1】:

    android 中的布局是异步的。尝试覆盖 WebView onSizeChanged 方法以在 webview 的大小更改时收到通知。或者,您也可以使用ViewTreeObserver,但效率较低。

    WebView 从它的视图父级获取大小。由于您没有将 webview 附加到视图,因此它根本不会调整大小,您需要通过调用来强制这样做

    webview.layout(0, 0, width, height);
    

    请注意,以上只是在 webview 位于视图层次结构中时在 webview 上调用的众多方法之一。实现可能会改变以依赖于未来更多/不同的调用。一种更具前瞻性的方法是将 webview 插入到视图层次结构中并将其可见性设置为 INVISIBLE。

    【讨论】:

    • onSizeChanged 从未被调用过。我可以得出结论,webView.setLayoutParams(new LinearLayout.LayoutParams(300, 400)); 没有改变大小。
    • 哦,是的,呃!您是否将 webview 添加到视图系统?你更新它,但不要将它添加到任何父母
    • 我不会显示它或将它附加到布局中,我只是想创建它,调整它的大小并在后台加载东西。
    • @ElyesJlassi 哦,对不起,我错过了你的那一点问题。在这种情况下,您需要手动调用 webview.layout(0, 0, width, height)。
    【解决方案2】:

    我认为你应该像这样打印 webView 的宽度和高度:

    System.out.println("webView: " + webView.getLayoutParams().width);
    System.out.println("webView: " + webView.getLayoutParams().height);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2012-07-28
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      相关资源
      最近更新 更多