Android WebView链接颜色

Android WebView链接颜色,android,colors,webview,Android,Colors,Webview,我正在使用WebView在我的应用程序中显示网站,我想知道是否可以更改默认为蓝色和下划线的链接颜色和样式 我搜索了它,但是有关于删除链接周围突出显示的所有问题和解决方案,而没有关于链接本身的问题和解决方案。我只是想知道有没有像TextView这样简单的解决方案,或者我是否需要以某种方式修改网站正文 谢谢 好的,我设法做到了,并想为未来的访客分享我的方式 首先,我创建了一个具有所需样式的css文件,名为style.css,保存在assets文件夹下 a {color:purple; text-de

我正在使用WebView在我的应用程序中显示网站,我想知道是否可以更改默认为蓝色和下划线的链接颜色和样式

我搜索了它,但是有关于删除链接周围突出显示的所有问题和解决方案,而没有关于链接本身的问题和解决方案。我只是想知道有没有像TextView这样简单的解决方案,或者我是否需要以某种方式修改网站正文


谢谢

好的,我设法做到了,并想为未来的访客分享我的方式

首先,我创建了一个具有所需样式的css文件,名为
style.css
,保存在assets文件夹下

a {color:purple; text-decoration:none}
然后,在代码中,我加载了页面,如下所示,
content
是页面的实际html内容

String htmlBody = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />" + content;
mWebView.loadDataWithBaseURL("file:///android_asset/", htmlBody, "text/html", "utf-8",
            null);
字符串htmlBody=”“+内容;
mWebView.loadDataWithBaseURL(“file:///android_asset/,htmlBody,text/html,utf-8,
无效);

就这样!希望它能帮助一些人。

下面是一个如何添加html链接和自定义它们的示例:

WebSettings webViewSettings = webView.getSettings();
webViewSettings.setDefaultFontSize(AppSettings.defaultFontSize);
webView.setBackgroundColor(Color.TRANSPARENT);

webView.loadDataWithBaseURL("file:///android_asset",  Util.replaceLinkTags(myText), "text/html", "utf-8", null);
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("file")) {
            Intent intent = new Intent(MyActivity.this, MyActivity.class);
            intent.putExtra("word", Uri.parse(url).getLastPathSegment());
            startActivity(intent);
            return true;
        } else
            return false;
    }
});

public static String replaceLinkTags(String text) {
    text = "<html><head>"
            + "<style type=\"text/css\">body{color:" + "#424242" + ";} a{color:#00B8D4; text-decoration:none; font-weight:bold;}" 
            + "</style></head>"
            + "<body>" + text + "</body></html>";

    String str;
    while ((text.indexOf("\u0082") > 0)) {
        if ((text.indexOf("\u0082") > 0) && (text.indexOf("\u0083") > 0)) {
            str = text.substring(text.indexOf("\u0082") + 1, text.indexOf("\u0083"));
            text = text.replaceAll("\u0082" + str + "\u0083", "<a href=\"" + str + "\">" + str + "</a>");
        }
    }    
    return text;
}
WebSettings-webViewSettings=webView.getSettings();
webViewSettings.setDefaultFontSize(AppSettings.defaultFontSize);
setBackgroundColor(Color.TRANSPARENT);
webView.loadDataWithBaseURL(“file:///android_asset,Util.replaceLinkTags(myText),“text/html”,“utf-8”,null);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
if(url.startsWith(“文件”)){
Intent Intent=新的Intent(MyActivity.this、MyActivity.class);
intent.putExtra(“word”,Uri.parse(url.getLastPathSegment());
星触觉(意向);
返回true;
}否则
返回false;
}
});
公共静态字符串替换链接标记(字符串文本){
text=“”
+“正文{颜色:+”#424242“+”}a{颜色:#00B8D4;文本装饰:无;字体大小:粗体;}”
+ ""
+“+文本+”;
字符串str;
而((text.indexOf(“\u0082”)>0)){
如果((text.indexOf(“\u0082”)>0)和(&(text.indexOf(\u0083”)>0)){
str=text.substring(text.indexOf(“\u0082”)+1,text.indexOf(“\u0083”);
text=text.replaceAll(“\u0082”+str+”\u0083“,”);
}
}    
返回文本;
}

可能重复:或第二个是关于突出显示的内容,正如我在问题中所述,我不关心链接周围的突出显示。第一个是建立自己的html据我所知,所以这不是我的情况。我想你将不得不改变网站。您应该能够添加一些样式,如
a{color:red;}
将所有链接更改为红色。如果你不想在页面上出现这种情况,你可以尝试在你的应用程序中拉html,在
中插入一些
标记,然后用你的网络视图进行渲染。我只是在尝试,实际上,创建了一个css文件,现在我正在尝试加载带有链接样式的页面,到目前为止还没有成功:)哦,成功了!我设法用一个自定义css文件加载页面,这是当时的工作方式。谢谢ecem,我使用了你的解决方案,但通过在htmlBodydon中添加“a{color:purple;text decoration:none}”来内联执行。别忘了在前面添加“a”{color。我认为这是一个印刷错误,但实际上它表明颜色应该只应用于链接。感谢您的回答,我尝试使用此代码,但此代码帮助不足。您能给我一些其他解决方案吗?感谢您分享此答案,解决方案对我很好,非常感谢您的问题@ecem。