[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 에는 태그가로 설정되어 있어야합니다 .body
background-color
transparent
따라서 전체 솔루션은 다음과 같습니다.
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);
}
위의 코드는 나를 위해 가득 차 있습니다.