更改页面样式Android WebView

时间:2015-04-10 20:36:54

标签: c# android css webview android-webview

我目前正在开发一个小型应用程序,只需将一个网页加载到webview中,我希望能够在使用此应用程序浏览时使该网页看起来与众不同。

这个页面使用一个.css,我想使用我自己的.css版本而不是原版。或者只是用我的原版替换部分版本(使用原版然后用我的版本覆盖它)。

是否可以修改页面的源代码(在加载之前可选择),这样我可以更改一些样式以使网页看起来不同?

只是解释一下: 我想要改变 <link rel="stylesheet" type="text/css" href="original.css"> <link rel="stylesheet" type="text/css" href="original.css"> <link rel="stylesheet" type="text/css" href="http://www.something.com/edited.css">

我正在使用Xamarin Studio,C#Android WebView项目,顺便说一下.. 此外,这很可能被称为副本:Override web page style in Android WebView但它从未被回答,所以它对我没有帮助..

2 个答案:

答案 0 :(得分:0)

你看过了吗?

WebView的

addJavascriptInterface (Object object, String name)

您可以注入代码来操纵DOM。这可能是一个坏主意,因为它在很多方面都是安全问题。

WebSettings对象更少侵入性和更安全,允许您更改一些表示方面:http://developer.android.com/reference/android/webkit/WebSettings.html

在此领域,另一个需要探索的工具是创建和设置WebViewClient子类:http://developer.android.com/reference/android/webkit/WebViewClient.html

只有几条途径可以探索。

答案 1 :(得分:0)

您可以使用Javascript注入您的CSS。 WebView完成加载后,您可以注入以下javascript:

var link = document.createElement("link");
link.href = "http://example.com/mystyle.css";
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(link);  

所以你的最终Java代码看起来像这样:

String jsToInject = "var link=document.createElement('link');link.href='http://example.com/mystyle.css';link.type ='text/css'; link.rel ='stylesheet';document.getElementsByTagName('head')[0].appendChild(link);";
myWebView.loadUrl("javascript:" + jsToInject);