ドキュメント眺めてたら気になって探してみたらタイトルみたいな事が出来る方法を見つけました。
イメージ
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.textView);
Html.ImageGetter imageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Log.d(TAG, "source:" + source);
int resId = 0;
if (source.equalsIgnoreCase("droid")) {
resId = R.drawable.ic_launcher;
} else {
throw new IllegalArgumentException();
}
Drawable drawable = getResources().getDrawable(resId);
drawable.setBounds(0, 0, 40, 40);
return drawable;
}
};
String origString = "Hello world<img src='droid'>";
Spanned spanned = Html.fromHtml(origString, imageGetter, null);
tv.setText(spanned);
}
Html.fromHtmlにコールバックを渡して、htmlタグから渡されたsrc名に応じてDrawableを返すだけです。
注意
drawable.setBounds()忘れると何も表示されないです。