0

すべての要素をループして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());

また、下付き文字はすべて半分にカットされます。プログラムを実行すると、添え字番号の上半分だけが表示されます。

この両方の問題を修正する方法はありますか?

4

1 に答える 1

1

私は自分の答えを見つけました。Html.fromHtml()は、ループごとに以前のSpanedオブジェクトを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>
于 2012-08-04T00:15:26.377 に答える