2010-11-16 108 views
2

我创建了一个带有透明背景的webview。Webview中的setBackgroundColor()不起作用

browser = new WebView(ActivityActivate.this); 
browser.setBackgroundColor(0); 

browser.getSettings().setJavaScriptEnabled(true); 
browser.addJavascriptInterface(new JavascriptInterface(), "javaInterface");    

browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
browser.getSettings().setSupportZoom(true); 

browser.loadDataWithBaseURL("https://checkout.google.com", form, "text/html", "UTF-8", null); 
llPaymentButtons.addView(browser); 

这里是当HTML表单提交和所有复选框通过测试应该改变背景颜色的JavaInterface。

/** 
* Interface for Javascript communication 
*/ 
private class JavascriptInterface { 

    //This is in fact used but from JavaScript 
    @SuppressWarnings("unused") 
    public boolean checkboxPass() { 
     if(acceptsConditions() && acceptsLicense() && acceptsRefundPolicy()) { 
      browser.setBackgroundColor(Color.WHITE); 
      return true; 
     } 
     return false; 
    } 
} 

但是这并不起作用,并且返回的文档仍然具有透明背景。我做错了什么,看起来browser.setBackgroundColor(Color.WHITE);什么都不做?

+0

你确定代码完全执行了吗?你是否在设置的颜色线上设置了断点? – 2010-11-16 11:51:22

+0

它实际上执行,但从错误的线程,它似乎是一个Handler()修复问题 – jax 2010-11-16 12:00:36

回答

16

可以覆盖webview背景setbackgroundResource方法,

尝试这样你会得到它,

wv.setBackgroundColor(0); 
wv.setBackgroundResource(color.blue); 
wv.loadUrl(url); 
+0

它看起来不像@ jax需要重新加载WebView内容.. – 2010-11-16 11:50:22

+0

获取此错误 - 11-16 18:59:09.922 :错误/ AndroidRuntime(1113):致命异常:WebViewCoreThread 11-16 18:59:09.922:错误/ AndroidRuntime(1113):android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程可以触摸其视图。 – jax 2010-11-16 11:56:06

+0

这是因为我是从JavaScript接口做的......不知道该怎么办... – jax 2010-11-16 11:56:58

0

目前,我们可以在webview.setBackgroundColor(Color.TRANSPARENT)onLayout(),然后添加到style="background-color:white" html元素。