Android WebView链接颜色

时间:2013-09-19 20:33:25

标签: android colors webview

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

我搜索了它,但是有关于删除链接周围的突出显示的所有问题和解决方案,没有关于链接本身。我只是想知道是否有一些解决方案像TextView的android:textColorLink一样简单,还是我需要以某种方式改变网站主体?

谢谢!

2 个答案:

答案 0 :(得分:17)

好的,我设法做到了,并希望与未来的访问者分享我的方式。

首先,我创建了一个具有所需样式的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);

就是这样!希望它对某人有所帮助。

答案 1 :(得分:1)

以下是如何添加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;
}