繁体   English   中英

如何在android webview中设置背景颜色黑色和文本白色

[英]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测试的结果:

http://i.imgur.com/IWsRcAW.png

在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颜色。

  1. 您需要在父级中实现反转。 我使用的是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)); } }
  2. 将您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM