読者です 読者をやめる 読者になる 読者になる

HTML表示でハマった

基本的には、下記のページにあるとおりでできます。

http://d.hatena.ne.jp/androidprogram/20100518/1274184600


で、その取得してきたCharSequenceに対して、文字列を追加したくなり、下記のように記述しました。

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string name="hoge">画像を &lt;img src=\"image_%1$d\"> 表示。</string>
</resources>


javaのソース

TextView textView = (TextView) findViewById(R.id.fuga);

String text = String.format(getResources().getText(R.string.hoge)
		.toString(), 0);

CharSequence html = Html.fromHtml(text, new Html.ImageGetter() {
	@Override
	public Drawable getDrawable(String source) {
		// 画像のリソースIDを取得
		int id = getResources().getIdentifier(source, "drawable",
				getPackageName());

		// リソースIDから Drawable のインスタンスを取得
		Drawable d = getResources().getDrawable(id);
		d.setBounds(0, 0, 24, 38);
		return d;
	}
}, null);

textView.setText(html + "追加");

で、出てきたのが、画像部分が点線で囲まれた中に「OBJ」と書かれているアイコン。
ちなみに、drawableフォルダには「image_0.png」っていうファイルが、ちゃんとあります。

実際、htmlのクラスは「android.text.SpannableStringBuilder」なのですが、
「html + "追加"」のクラスは「java.lang.String」となってしまう。
そのへんが原因?

まぁ、当たり前ですが、ハマったのでメモ。