[英]How to set Webview link color from resource
我有一些要加載到WebView
HTML,我需要自定義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?
找到了解決方案:
通過getResources().getString()
檢索Android Color資源時,我收到了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);
您應該像這樣將顏色放在strings.xml中:
<string name="Link_Colour">#223344</string>
或者,如果您想堅持使用顏色,請執行此操作
int color = getResource().getColor(R.color.xyz);
String linkColor = "#" + Integer.toHexString(color)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.