跨区Textview HTML格式仅适用于最后一个循环?

时间:2012-08-02 21:23:41

标签: android html textview spannable spanned

我需要能够遍历所有元素并将其设置为Textview。但是,我还需要将我的数字格式化为下标。我尝试使用循环,但只有最后一个数字格式正确。

例如,如果我输入Fe2Zn7Ag4,只有“4”将在下标中,其余的将像正常一样。 这是我的代码:

Spanned EF = Html.fromHtml("");
for(int g = 0; g < numSaved; g++)
{
    EF = Html.fromHtml(EF + savedChem[g].getFormula());
    if(!(savedChem[g].getMoles().equals("1")) && !(savedChem[g].getMoles().equals("0")))
        EF = Html.fromHtml(EF + "<sub>" + savedChem[g].getMoles() + "</sub>");
}
EmpiricalFormula.setText(findEmpirical());

此外,任何下标都会减少一半。当我运行程序时,只会显示下标数字的上半部分。

知道如何解决这两个问题吗?

1 个答案:

答案 0 :(得分:1)

我找到了答案。事实证明,Html.fromHtml()将我之前的Spanned对象转换为每个循环的String,因此您只能以最后一个循环结束。我用以下代码解决了这个问题:

Spanned[] E = new Spanned[numSaved];
for (int a = 0; a < numSaved; a++)
{
    EF =(Spanned) TextUtils.concat(EF, E[a]);
}

我还通过添加“小”标签修复了我的下标问题。

<sub><small>" + savedChem[g].getMoles() + "</small></sub>