HTML表示でハマった
基本的には、下記のページにあるとおりでできます。
http://d.hatena.ne.jp/androidprogram/20100518/1274184600
で、その取得してきたCharSequenceに対して、文字列を追加したくなり、下記のように記述しました。
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hoge">画像を <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」となってしまう。
そのへんが原因?
まぁ、当たり前ですが、ハマったのでメモ。