【问题标题】:How to set Webview link color from resource如何从资源中设置 Webview 链接颜色
【发布时间】:2013-10-04 18:41:43
【问题描述】:

我有一些 HTML 正在加载到 WebView 中,我需要自定义 css 样式。当直接从我的颜色资源中设置链接颜色时,我遇到了一些麻烦。在以下示例中,使用 linkColorManual 有效,但如果我将其切换为 linkColor,css 样式将被忽略:

String mime = "text/html";
String encoding = "utf-8";
String linkColor = getResources().getString(R.color.Link_Colour);
String linkColorManual = "#867970";
String html = "<!DOCTYPE HTML>\n<html>\n<head>\n<style>\n"
        + "body, html { font-family: 'sans-serif'; font-size:14px; color:#8B8D90;}\n"
        + "a {color:"+linkColorManual+";}\n"
        + "</style>\n</head>\n<body>" + post.getPostData().toString() + "</body>\n</html>";
WebView myWebView = (WebView) findViewById(R.id.post_content);
myWebView.loadDataWithBaseURL(post.getPostURL().toString(), html, mime, encoding, null);

这是我的color.xml 文件中的相关行:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    ...
    <color name="Link_Colour">#867970</color>
    ...
</resources>

我不想在我的应用中复制粘贴这个十六进制颜色。如果我直接从资源中加载颜色字符串,为什么应用 css 失败?

【问题讨论】:

    标签: android html css webview


    【解决方案1】:

    找到解决方案:

    当通过getResources().getString() 检索 Android 颜色资源时,我收到了一个 8 个字符的十六进制颜色 不是 CSS 可以解析的 6 位颜色。从上面的例子来看,这意味着:

    linkColor = #ff867970;
    linkColorManual = #867970;
    

    前面额外的两个字符 (#ff) 表示 Alpha(有关更多信息,请参阅 Android Color 文档)。为了取回 6 个字符的 CSS 可解析颜色,我使用了以下内容:

    int linkColorInt = getResources().getColor(R.color.Link_Colour);
    String linkColor = "#" + Integer.toHexString(linkColorInt & 0x00FFFFFF);
    

    【讨论】:

    • 从我的 colors.xml 中定义的#00FF00 开始,您的解决方案刚刚开始#FF00
    【解决方案2】:

    你应该像这样将你的颜色放在 strings.xml 中:

    <string name="Link_Colour">#223344</string>
    

    或者,如果您想坚持使用颜色,请这样做

    int color = getResource().getColor(R.color.xyz);
    String linkColor = "#" + Integer.toHexString(color)
    

    【讨论】:

    • 虽然此解决方案有效,但这意味着我必须复制我的十六进制颜色 - 将一个存储在 color.xml 中,将另一个存储在 strings.xml 中,因为我仍然需要访问 Link_Colour 其他颜色整个应用中的 UI 元素。
    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多