0
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 の背景色を黒に、テキストを白に設定したいのですが、Html で適用しようとしましたが、出力できません。Webview のテキストと背景にナイト モードを設定する方法を教えてください。

4

10 に答える 10

8

これを使って

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);

6 月 20 日更新:

ロードが完了した後に Web ページの CSS を変更する場合 (たとえば、 で webPageAddress をロードする場合loadUrl)、次のように実行できます。

  • JavaScript を有効に設定webView

    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\");"
      );
    }
    
于 2014-04-29T07:50:23.183 に答える
3

これは、Web ページに 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);
于 2014-04-26T06:15:12.607 に答える
2

わかりました、これはドキュメントになく、お勧めしませんが、動作します:

@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

于 2013-09-24T09:07:49.387 に答える
2

webview.setBackgroundColor(0)webview を透明にします。

HTML タグ bg で背景色を黒に設定する必要があります。

于 2013-09-24T06:58:06.940 に答える
1

Javaクラスで次を与えます

webView1.setBackgroundColor(0);

xmlでテキストの色を設定します

于 2013-09-24T06:45:51.400 に答える
1

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);
于 2013-09-24T07:02:21.833 に答える
0

ハイこれはあなたを助けるかもしれません

dialogMesage.setBackgroundColor(0x00000000);

また

myWebView.setBackgroundColor(Color.parseColor("#FFFFFF"));
于 2013-09-24T06:51:47.463 に答える
0

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を反転する必要があります。

于 2015-01-29T14:38:27.520 に答える