2013-10-04 3 views
1

У меня есть HTML, который я загружаю в WebView, и мне нужно настроить стили css. Когда дело дошло до установки цвета ссылки непосредственно из моего ресурса Color, у меня были некоторые проблемы. В следующем примере с помощью linkColorManual работал, но если я включил его в linkColor стиль CSS был проигнорирован:Как установить цвет ссылки Webview из ресурса

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, если я загружаю строку цвета непосредственно из ресурса?

ответ

0

Найдено решение:

При извлечении ресурса цвета Android через getResources().getString() я получил 8-значный шестнадцатеричный цвет NOT 6-разрядный, который может содержать CSS жопа. Из примера выше это означало:

linkColor = #ff867970; 
linkColorManual = #867970; 

Два дополнительных символы (#ff) на передней панели представляют собой альфа (см Android Color документов для получения дополнительной информации). Чтобы получить 6 символов CSS оформленного цвета вместо этого, я использовал следующее:

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

из # 00FF00, определенный в моих цветах.xml с вашим решением, просто gettin # FF00 – Jorgesys

0

Вы должны просто поставить свой цвет в strings.xml так:

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

Или, если вы хотите придерживаться цвета, сделать это

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

Хотя это решение работает, это означает, что я должен был бы дублировать мои шестигранные цвета - еще один хранятся в 'color.xml' и другой хранится в 'strings.xml', потому что мне еще нужно получить доступ к цвету« Link_Colour »для других элементов пользовательского интерфейса во всем приложении. – alexgophermix

Смежные вопросы