无法更改表标记中行和列中所有元素的字体颜色

时间:2013-09-17 20:17:06

标签: html fonts html-table android-webview

我正在尝试更改不同区域中不同网页元素的字体颜色。大多数情况下,我正在使用时工作正常,我正在使用这样:

<font color='BLUE'>
<DIV>
<SPAN style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; FLOAT: none;      : rgb(34,34,34); FONT: 13px Calibri; -webkit-text-size-adjust: auto">
</SPAN>
</DIV>
<DIV>
<SPAN style="BORDER-TOP-     : ; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; FLOAT: none;      : rgb(0,0,0); FONT: large arial, sans-serif;  -webkit-text-size-adjust: auto">abc
</SPAN>
</DIV>
</font>

或只是

 <font color='BLUE'>
<P>abc
</P>
    </font>

但是当我试图改变字体颜色并形成一些标签下的文字元素时,它就不起作用了!

<font color='Blue'>
        <DIV>   
        <TABLE style="WIDTH: 165pt; BORDER-COLLAPSE: collapse; border=0 cellSpacing=0 cellPadding=0 width=219>
        <COLGROUP>
        <COL style="WIDTH: 21pt; mso-width-source: userset; mso-width-alt: 1024" width=28>
        <COL style="WIDTH: 92pt; mso-width-source: userset; mso-width-alt: 4498" width=123>
        <TBODY>
        <TR style="HEIGHT: 66pt; mso-height-source: userset" height=88>
        <TD style="BORDER-BOTTOM: #ece9d8; BORDER-LEFT: #ece9d8;           -     : transparent; WIDTH: 165pt; HEIGHT: 66pt; BORDER-TOP: #ece9d8; BORDER-RIGHT: #ece9d8" class=xl65 height=88 width=219 colSpan=4><FONT size=2 face=Calibri></FONT>
        </TD></TR>
        <TR style="HEIGHT: 107.25pt; mso-height-source: userset" height=143>
        <TD style="BORDER-BOTTOM: #ece9d8; BORDER-LEFT: #ece9d8;           -     : transparent; WIDTH: 165pt; HEIGHT: 107.25pt; BORDER-TOP: #ece9d8; BORDER-RIGHT: #ece9d8" class=xl65 height=143 width=219 colSpan=4>
        <FONT size=2 face=Calibri>
        <SPAN style="mso-spacerun: yes">&nbsp; </SPAN><BR><BR></FONT></TD></TR>
        </TBODY>
        </TABLE>
        </DIV>
        </font>

如果我想保留通用规则来更改各种格式的字体颜色,请建议我该怎么办。这是我在一些应用程序中使用的,我从用户那里获得了他们在html标签中插入文本的输入,我只需要使文本的字体颜色相似,并为所有输入保持相同的格式。

P.S。为了使场景清晰,从服务器端我实际获得所有的html标签和文本,在字符串的开头和结尾添加,将新的String加载到这样的webview中:

String str = "abc"; //actaully what I am getting from backend with html tags

if(ann.get() != null)

    String  content = "<font color='Blue'>";
    content = content + Str;
    content = content + "</font>";
    details.loadData(content,"text/html","UTF-8");
    details.setBackgroundColor(Color.Black);

2 个答案:

答案 0 :(得分:1)

为您的元素提供适当的类,然后您可以使用CSS来设置这些类的样式。

例如

table {color: white}
td.myclass {color: green}

答案 1 :(得分:1)

根据所有HTML规范,div元素中包含tablefont元素的标记无效。然而,浏览器传统上消化它,但是字体属性不会影响表内的内容。这仍然是现代浏览器在Quirks Mode中的行为方式。

奇怪的是,在标准模式下,现代浏览器会在表格内容上应用字体颜色。 (因此,在所谓的标准模式中,一些非标准的标记会被忽略!)然而,通过在文档的最开头打<!doctype html>来切换到标准模式是非常危险的。已经开发出以Quirks模式工作的代码可能会在标准模式下完全崩溃,或者它可能几乎相同,或介于两者之间。

如果您特别想在页面的表格中设置颜色,可以添加以下元素:

<style>
th, td { color: blue }
</style>

它应该通过HTML语法进入head部分,但实际上它也适用于body部分,所以你可以在表之前(或之后!)对它进行打击必须的。