【问题标题】:W/webcore(2733): Can't get the viewWidth after the first layoutW/webcore(2733):第一次布局后无法获取 viewWidth
【发布时间】:2012-05-24 18:12:52
【问题描述】:

我有三个彼此相邻的 web 视图,用于显示单独的微调器。我有时会收到此错误,这会导致窗口渲染出现问题。

这是我的 xml...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
   <LinearLayout 

    android:orientation="horizontal" 
    android:layout_height="300dp"
    android:layout_width="match_parent"
    android:gravity="center">

        <WebView
            android:id="@+id/measure_view" 
            android:background="#77000000"
            android:layout_height="match_parent" 
            android:layout_width="160dp"
            android:focusable="true"/>

        <WebView
            android:id="@+id/input_view" 
            android:background="#77000000"
            android:layout_height="match_parent" 
            android:layout_width="160dp"
            android:focusable="true"/>
        <WebView
            android:id="@+id/output_view" 
            android:background="#77000000"
            android:layout_height="match_parent" 
            android:layout_width="160dp"
            android:focusable="true"/>


    </LinearLayout>

有什么想法吗?

谢谢,纳撒尼尔。

【问题讨论】:

    标签: javascript android html css


    【解决方案1】:

    对于遇到此问题的任何人:

    据我发现,在创建 webview 时会发生一些线程,并且某些变量(例如宽度)正在跨线程引用。这是为了引用代码“不完美”,因为有时数据在渲染时不可用。

    看看这个:

    CODE

    和 ctrl-f 错误“Can't get viewWidth”的文本...你会明白我在说什么。

    这里的一个有趣的延续是我使用了多个 webviews - 这可能使这个问题更加复杂。另一个有趣的方面是,在我的代码中失败的 webview 总是第一个加载内容的,尽管它并不总是失败。

    我的解决方案是让事情第一次失败,然后重新渲染失败的 web 视图。

    希望这会有所帮助。

    纳撒尼尔。

    【讨论】:

    • 您能分享一下您是如何检测到故障的,以及您是如何重新渲染 web 视图的吗?
    • 嘿斯蒂莱特,np。基本上我只是假设所有三个视图都失败并重新绘制它们。就我如何处理重新渲染而言: web_view.loadUrl("javascript:window.location.reload(true);");我经常使用 JavaScript,所以如果您不想这样做,我不确定重新渲染的最佳方法是什么。
    • doesnt reload(true) 表示您正在清除浏览器缓存,所以需要重新下载整个网页吗?相当低效,不是吗?必须有更好的解决方案......
    • 是的,效率很低。那里没有分歧。除了放弃网络视图之外,我从来没有发现过它。
    【解决方案2】:

    当它不加载时会发生什么?你在 logcat 中收到错误吗?

    加载数据后,尝试这样做:

    webView.refreshDrawableState();
    

    【讨论】:

    • 在我能找到的任何地方都没有错误。不过,我会尝试刷新。谢谢。
    • 嘿,所以我发现了这个错误 05-24 16:07:29.778: W/webcore(1639): Can't get the viewWidth after the first layout - 碰巧知道有关 htat 的任何信息?我开始发疯了,哈哈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多