[android] 안드로이드 WebView 스타일 배경색 : 안드로이드 2.2에서 무시되는 투명

투명한 배경으로 WebView를 만드는 데 어려움을 겪고 있습니다.

webView.setBackgroundColor(0x00FFFFFF);
webView.setBackgroundDrawable(myDrawable);

그런 다음 html 페이지를

<body style="background-color:transparent;" ...

WebView의 배경색은 투명하지만 페이지가로드 되 자마자 html 페이지의 검정색 배경으로 덮어 씁니다. 이것은 안드로이드 2.2에서만 발생하며 안드로이드 2.1에서 작동합니다.

html 페이지 코드에 추가하여 실제로 투명하게 만들 수 있습니까?



답변

이것은 나를 위해 일했다.

mWebView.setBackgroundColor(Color.TRANSPARENT);


답변

앞에서 언급 한이 문제 의 맨 아래 에는 해결책이 있습니다. 두 가지 솔루션의 조합입니다.

webView.setBackgroundColor(Color.TRANSPARENT);
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

URL 로드 한 WebViewer에이 코드를 추가하면 작동합니다 (API 11+).

하드웨어 가속이 ON 일 때도 작동


답변

2.2와 2.3에서도 같은 문제가있었습니다. 안드로이드가 아닌 html로 알파 값을 지정하여 문제를 해결했습니다. 나는 많은 것을 시도했고 내가 알아 낸 것은 setBackgroundColor();색상이 알파 값으로 작동하지 않는다는 것입니다. webView.setBackgroundColor(Color.argb(128, 0, 0, 0));작동 안 할 것이다.

그래서 여기 내 해결책이 있습니다.

      String webData = StringHelper.addSlashes("<!DOCTYPE html><head> <meta http-equiv=\"Content-Type\" " +
      "content=\"text/html; charset=utf-8\"> </head><body><div style=\"background-color: rgba(10,10,10,0.5); " +
      "padding: 20px; height: 260px; border-radius: 8px;\"> $$$ Content Goes Here ! $$$ </div> </body></html>");

그리고 자바에서는

    webView = (WebView) findViewById(R.id.webview);
    webView.setBackgroundColor(0);
    webView.loadData(webData, "text/html", "UTF-8");

그리고 아래 출력 화면이 있습니다.여기에 이미지 설명을 입력하십시오


답변

실제로 그것은 버그이며 지금까지 아무도 해결책을 찾지 못했습니다. 문제가 생성되었습니다. 버그는 여전히 벌집에 있습니다.

중요하다고 생각되면 별표를 표시하십시오. http://code.google.com/p/android/issues/detail?id=14749


답변

이것이 당신이하는 방법입니다 :

먼저 프로젝트 기반을 11로 설정하지만 AndroidManifest에서 minSdkVersion을 8로 설정하십시오.

android : hardwareAccelerated = “false”는 불필요하며 8과 호환되지 않습니다

wv.setBackgroundColor(0x00000000);
if (Build.VERSION.SDK_INT >= 11) wv.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

this.wv.setWebViewClient(new WebViewClient()
{
    @Override
    public void onPageFinished(WebView view, String url)
    {
        wv.setBackgroundColor(0x00000000);
        if (Build.VERSION.SDK_INT >= 11) wv.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }
});

안전을 위해 스타일을 지정하십시오.

BODY, HTML {background: transparent}

2.2와 4에서 나를 위해 일했습니다.


답변

가장 중요한 것은 언급되지 않았습니다.

html 에는 태그가로 설정되어 있어야합니다 .bodybackground-colortransparent

따라서 전체 솔루션은 다음과 같습니다.

HTML

    <body style="display: flex; background-color:transparent">some content</body>

활동

    WebView wv = (WebView) findViewById(R.id.webView);
    wv.setBackgroundColor(0);
    wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    wv.loadUrl("file:///android_asset/myview.html");


답변

아래 코드는 Android 3.0 이상에서 작동 하지만 Android 3.0 아래 에서이 코드를 시도하면 앱이 강제 종료됩니다.

webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

API 11 이하 에서 아래 코드를 시도하십시오 .

webview.setBackgroundColor(Color.parseColor("#919191"));

또는

모든 API에서 잘 작동하는 아래 코드를 시도해 볼 수도 있습니다 .

    webview.setBackgroundColor(Color.parseColor("#919191"));
    if (Build.VERSION.SDK_INT >= 11) {
        webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
    }

위의 코드는 나를 위해 가득 차 있습니다.