android - webview没有显示css背景颜色

时间:2014-06-24 15:29:43

标签: java android webview

我有一个webview,我必须以固定的间隔更新。这是我的代码

future = executor.scheduleAtFixedRate(new Runnable()
{                   
    @Override
    public void run()
    {
        handler.postAtFrontOfQueue(new Runnable()
        {                           
            @Override
            public void run()
            {
                Log.d("set " + count);
                if (Build.VERSION.SDK_INT < 18) {
                    clearView();
                } else {
                    loadUrl("about:blank");
                }
                count++;
                final String html = "<div style=\"background-color: #7777FF; text-align : center; width : 100% ; height : 100%;\">" + count + "</div>"
                final String base = "<html><body style='margin:0;padding:0;'>" + html + "</body></html>";           
                loadData(base, "text/html", Encoding.UTF_8.toString()); 

            }
        });
    }
},0, 5, TimeUnit.SECONDS);

我的问题是css属性&#39; background-color:#7777FF; &#39;在第二次调用函数后停止显示。关于如何解决这个问题的任何想法?我删除了视图的清除,而不是计数没有更新。任何可以让html更新并保留所有属性的方法都会很棒。

第一次  working

第三次

not working

我正在获取这些日志

06-24 09:53:36.853: D/WebView(30537): loadUrlImpl: called
06-24 09:53:36.863: D/webcore(30537):  CORE loadUrl: called
06-24 09:53:36.863: D/webkit(30537): Firewall not null
06-24 09:53:36.863: D/webkit(30537): euler: isUrlBlocked = false
06-24 09:53:36.873: I/GATE(30537): <GATE-M>DEV_ACTION_COMPLETED</GATE-M>

1 个答案:

答案 0 :(得分:0)

它与我的观点被测量的方式有关。我将on measure代码更改为此

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSize = MeasureSpec.getSize(heightMeasureSpec);

    final int width = MeasureSpec.getSize(widthMeasureSpec);
    int height;
    int desiredHeight = Math.round(width * RATIO);

    if (heightMode == MeasureSpec.EXACTLY) {
        height = heightSize;
    } else if (heightMode == MeasureSpec.AT_MOST) {
        height = Math.min(desiredHeight, heightSize);
    } else {
        height = desiredHeight;
    }

    setMeasuredDimension(width, height);
}

现在它按预期工作。