9

Spanテキストの一部に設定しています。スパン自体はうまく機能します。ただし、テキストはString.formatfromによって作成されており、Span を設定するテキストの一部がResourcesわかりません。startend

でカスタム HTML タグを使用しようとしましstrings.xmlたが、getTextまたはgetStringそれらを削除します。スパンを設定したい場所がまさにここにあるためgetString(R.string.text, "<nb>" + arg + "</nb>")、次のようなものを使用できます。Html.fromHtml()arg

テキスト形式を使用したこのアプローチを見まし"normal text ##span here## normal text"た。文字列を解析してタグを削除し、Span を設定します。

私の質問は、 Span を書式設定された文字列に設定するためのより良い方法はあります"something %s something"か、それとも上記のアプローチのいずれかを使用する必要がありますか?

4

4 に答える 4

2

クラスを導入することでこれを解決しました。TaggedArgこのクラスのインスタンスはに展開され<tag>value</tag>ます。次に、タグを含むテキストを読み取り、これらのタグをスパンに置き換えるオブジェクトを作成しました。異なるスパンがマップタグ->ファクトリに登録されています。

ちょっとした驚きがありました。のようなテキストがある場合は"<xx>something</xx> something"Html.fromHtmlこのテキストを。として読み取ります"<xx>something something</xx>"<html>これを防ぐために、テキスト全体の周りにタグを追加する必要がありました。

于 2011-09-05T07:17:14.063 に答える
0

ジョージが想定していた方法getText()は興味深いものです。しかし、余分なクラスを書く必要はありません。getText()を返しますCharSequence。したがってSpannableStringBuilder、これを TextView に設定するために使用します。

textViewCell.setText(new SpannableStringBuilder(getText(R.string.foo));

strings.xml では、html タグを使用して記述できます (テキストの前後の引用符を忘れないでください)。

<string name="foo">"CO<sub><small>2</small></sub>"</string>

この種のタグ付けは、(上記のように) textView に手動で設定するか、レイアウトに割り当てることでうまくいきました。

于 2016-04-13T09:19:35.300 に答える