Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android webview中设置背景色黑色和文本白色_Android - Fatal编程技术网

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

如何在android webview中设置背景色黑色和文本白色,android,Android,这是我的代码,我想设置webView的背景色黑色和文本白色,我曾尝试在Html中应用,但无法发布。请帮助我如何在webView文本和背景中设置夜间模式 package com.example.webviewtheme; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.webkit.WebView; public class MainActivity

这是我的代码,我想设置webView的背景色黑色和文本白色,我曾尝试在Html中应用,但无法发布。请帮助我如何在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");
    }

}

并设置xml中文本的颜色

将其用于webview背景颜色:

webView1.setBackgroundColor(0);
这对我很有用。

这可能对你有帮助

webview.setBackgroundColor0使webview透明

您需要在HTML标记bg中设置bg颜色黑色。

在XML中

myWebView.setBackgroundColor(Color.parseColor("#FFFFFF"));
在java代码中

<WebView
            android:id="@+id/web"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/black" />

好的,这不在文档中,也不推荐,但它可以工作:

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执行反向渲染。 倒置对比度的范围约为1到30,但不是很确定。 使用android 4.2测试的结果如下:


以下是将Javascript注入网页以使其反转颜色的方法:

@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) {}
}
用这个

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.getSettings().setJavaScriptEnabled(true);
注入CSS

webView.setWebViewClient(new WebViewClient() {
   @Override
   public void onPageFinished(WebView view, String url) {
      // Inject CSS on PageFinished
      injectCSS();
      super.onPageFinished(view, url);
   }
});

可以使用Web视图的父视图反转其颜色

您需要在父级中实现反转。我使用的是框架布局,但您可以使用其他形式的布局

公共类WebViewInverter扩展了FrameLayout{ 公共WebViewInvertorContext上下文{ 超级上下文; 初始化; } 公共WebViewInvertorContext上下文,属性集属性{ 超级上下文; 初始化; } public WebViewInverterContext上下文、属性集属性、int defStyleAttr{ 超级上下文,attrs,defStyleAttr; 初始化; } public WebViewInvertorContext上下文、属性集属性、int defStyleAttr、int defStyleRes{ 超级上下文,attrs,defStyleAttr,defStyleRes; 初始化; } private boolean nightMode=false; 私人油漆=新油漆; 专用彩色滤光片; 私有Rect反转Rect; @覆盖受保护的void dispatchDrawc{ inversionRect=新的Rect0,0,getWidth,getHeight; 位图b=Bitmap.createBitmapgetWidth,getHeight,Config.ARGB_8888; 画布cc=新画布B; super.dispatchdrawc; paint.SetColorFilterFull; c、 drawBitmapb,0,0,绘制; paint.setColorFiltercf; c、 drawBitmapb,inversionRect,inversionRect,paint; } 私有无效初始化{ 浮动[]垫=新浮动[] { -1, 0, 0, 0, 255, 0, -1, 0, 0, 255, 0, 0, -1, 0, 255, 0, 0, 0, 1, 0 }; cf=新的ColorMatrixColorFilternew ColorMatrixmat; } } 将WebView放在布局文件中的inverter内:


网络视图应该倒置。

Android有内置的夜间模式主题,名为theme.AppCompat.DayNight theme

要了解更多信息,请查看下面的链接了解如何实现此功能


尝试这些链接,你可以查看这个答案。我想为日间模式和夜间模式应用主题设置。我已经为日间模式设置了另一个按钮,在该按钮中,我设置了背景白色。我将如何执行此操作?你必须为同一网络视图应用背景白色?它也适用于我…正在使用此字体颜色和其他颜色黑或白。。。我们能知道它的颜色吗?我需要像夜间模式在网络视图。。。谢谢它抛出ClassNotFoundException。我已经看过debugger-getSettings返回WebSettings实例。谢谢。您节省了我宝贵的时间。@Parthi很高兴我能帮助您:我们如何对loadUrl执行同样的操作,因为我在WebView中使用外部url加载数据此筛选器很好,但在我的4.4设备上,它会使文本模糊。
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);
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);
   }
});
private void injectCSS() {
  webView.loadUrl(
    "javascript:document.body.style.setProperty(\"color\", \"white\");"
  );
  webView.loadUrl(
    "javascript:document.body.style.setProperty(\"background-color\", \"black\");"
  );
}