[英]How to set backGround color Black and text white in android webview
package com.example.webviewtheme;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webview1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview1=(WebView)findViewById(R.id.webView1);
String rawHTML = "<HTML>"+
"<body style='color: #000000; background-color: #ffffff'><h1>Hello Android </h1></body>"+
"</HTML>";
webview1.setBackgroundColor(00000000);
webview1.loadData(rawHTML, "text/HTML", "UTF-8");
}
}
这是我的代码 我想设置 webView 的背景颜色黑色和文本白色
用这个
webview1=(WebView)findViewById(R.id.webView1);
String rawHTML = "<HTML>"+
"<head>"+"<style type=\"text/css\">"+
"body,h1{color: #000000;"+
"background-color: #ffffff;}"+
"</style></head>"+
"<body><h1>Hello Android </h1></body>"+
"</HTML>";
webview1.loadData(rawHTML, "text/html; charset=UTF-8",null);
更新 20/6 月:
如果您想在加载完成后更改网页 css(例如使用loadUrl
加载 webPageAddress 时),您可以这样做:
在webView
上设置 javaScript 启用
webView.getSettings().setJavaScriptEnabled(true);
在页面加载完成时设置侦听器
webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // Inject CSS on PageFinished injectCSS(); super.onPageFinished(view, url); } });
注入 CSS
private void injectCSS() { webView.loadUrl( "javascript:document.body.style.setProperty(\\"color\\", \\"white\\");" ); webView.loadUrl( "javascript:document.body.style.setProperty(\\"background-color\\", \\"black\\");" ); }
以下是将 Javascript 注入网页以使其反转颜色的内容:
String js ="javascript: ("
+"function () { "
+"var css = 'html {-webkit-filter: invert(100%);' +"
+" '-moz-filter: invert(100%);' + "
+" '-o-filter: invert(100%);' + "
+" '-ms-filter: invert(100%); }',"
+"head = document.getElementsByTagName('head')[0],"
+"style = document.createElement('style');"
+"if (!window.counter) { window.counter = 1;} else { window.counter ++;"
+"if (window.counter % 2 == 0) { var css ='html {-webkit-filter: invert(0%); -moz-filter: invert(0%); -o-filter: invert(0%); -ms-filter: invert(0%); }'}"
+"};"
+"style.type = 'text/css';"
+"if (style.styleSheet){"
+"style.styleSheet.cssText = css;"
+"} else {"
+"style.appendChild(document.createTextNode(css));"
+"}"
//injecting the css to the head
+"head.appendChild(style);"
+"}());";
CustomWebView.this.loadUrl(js);
webview.setBackgroundColor(0)
使 webview 透明。
您需要在 HTML 标签 bg 中设置 bg 颜色为黑色。
好的,这不在文档中,也不推荐,但它会起作用:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
webview.loadUrl("http://en.wikipedia.org/wiki/Lena_S%C3%B6derberg");
try {
Class clsWebSettingsClassic =
getClassLoader().loadClass("android.webkit.WebSettingsClassic");
Method md = clsWebSettingsClassic.getMethod(
"setProperty", String.class, String.class);
md.invoke(webview.getSettings(), "inverted", "true");
md.invoke(webview.getSettings(), "inverted_contrast", "1");
} catch (Exception e) {}
}
这将对 WebView 进行反向渲染。
“inverted_contrast”的范围大约是 1 到 30(不太确定)。
用android 4.2测试的结果:
在java类中给出以下内容
webView1.setBackgroundColor(0);
并在 xml 中设置文本的颜色
以 XML 格式
<WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black" />
在java代码中
String str="<div style=\'background-color:transparent;padding: 5px ;color:#white'>Enter text to display in web view</div";
WebView web=(WebView)findViewById(R.id.web);
web.loadData(str,"text/html","utf-8");
web.setBackgroundColor(Color.TRANSPARENT);
将此用于 webview backgroundColor:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webview1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview1=(WebView)findViewById(R.id.webview1);
String text = "<html><head>"
+ "<style type=\"text/css\">body{color: #fff; background-color: #000;}"
+ "</style></head>"
+ "<body>"
+ "Helloo Andorid"
+ "</body></html>";
webview1.loadData(text, "text/html", "utf-8");
webview1.setBackgroundColor(00000000);
}
}
它对我有用..
嘿,这可能对你有帮助
dialogMesage.setBackgroundColor(0x00000000);
要么
myWebView.setBackgroundColor(Color.parseColor("#FFFFFF"));
您可以使用其父级反转WebView
颜色。
您需要在父级中实现反转。 我使用的是FrameLayout
,但您可以使用其他形式的布局。
public class WebViewInverter extends FrameLayout { public WebViewInverter(Context context) { super(context); init(); } public WebViewInverter(Context context, AttributeSet attrs) { super(context, attrs); init(); } public WebViewInverter(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } public WebViewInverter(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } private boolean nightMode = false; private Paint paint = new Paint(); private ColorFilter cf; private Rect inversionRect; @Override protected void dispatchDraw(Canvas c){ inversionRect = new Rect(0, 0, getWidth(), getHeight()); Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888); Canvas cc = new Canvas(b); super.dispatchDraw(cc); paint.setColorFilter(null); c.drawBitmap(b, 0, 0, paint); paint.setColorFilter(cf); c.drawBitmap(b, inversionRect, inversionRect, paint); } private void init(){ float[] mat = new float[] { -1, 0, 0, 0, 255, 0, -1, 0, 0, 255, 0, 0, -1, 0, 255, 0, 0, 0, 1, 0 }; cf = new ColorMatrixColorFilter(new ColorMatrix(mat)); } }
将您的WebView
放置在您的布局文件中的逆变器中:
<your.package.name.WebViewInverter android:id="@+id/view_inverter" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:layout_marginLeft="@dimen/reader_side_margins" android:layout_marginTop="@dimen/reader_top_margin" android:layout_marginRight="@dimen/reader_side_margins" android:layout_marginBottom="@dimen/reader_bottom_margin"> <ru.yandex.reader.widget.ReaderView android:id="@+id/view_reader" android:layout_width="match_parent" android:layout_height="match_parent"/> </your.package.name.WebViewInverter>
WebView
应该倒置。
Android 有内置的夜间模式主题,称为Theme.AppCompat.DayNight主题
<style name="MyTheme" parent="Theme.AppCompat.DayNight"> <!-- Blah blah --> </style>
要了解更多信息,如何实现此功能,请查看以下链接
https://medium.com/@chrisbanes/appcompat-v23-2-daynight-d10f90c83e94
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.