Html.fromHtml()を使用して、単純な Html を TextView に表示しています。私の好みでは、<h2>
見出しのフォントサイズが少し大きすぎるので、どうすればいいのか疑問に思っていました.Htmlクラスにはそのためのメソッドがありません. ソースコードを掘り下げて、クラスを拡張したり、メソッドをオーバーライドしたりできるかどうかを確認しますが、おそらく誰かが特定の Html タグのフォントサイズを設定することを既に達成していますか?
1129 次
1 に答える
3
それは確かに可能です。Html.fromHtml()
一緒に送信された独自の Handlerを使用するだけです。
次のようにできます。
CharSequence html = Html.fromHtml(markdownString, null, new TitleHandler());
...
static class TitleHandler implements TagHandler {
@Override
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if (tag.equalsIgnoreCase("h2")) {
processH2(opening, output);
}
}
public void processH2(boolean opening, Editable output) {
int len = output.length();
if (opening) {
output.setSpan(new RelativeSizeSpan(0.8f), len, len,
Spannable.SPAN_MARK_MARK);
} else {
Object obj = getLast(output, RelativeSizeSpan.class);
int where = output.getSpanStart(obj);
output.removeSpan(obj);
if (where != len) {
output.setSpan(new RelativeSizeSpan(0.8f), where, len,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private Object getLast(Editable text, Class kind) {
Object[] objs = text.getSpans(0, text.length(), kind);
if (objs.length == 0) {
return null;
} else {
for (int i = objs.length; i > 0; i--) {
if (text.getSpanFlags(objs[i - 1]) == Spannable.SPAN_MARK_MARK) {
return objs[i - 1];
}
}
return null;
}
}
}
を使用して、現在の 80% の相対サイズで要素の内側にnew RelativeSizeSpan(0.8f)
を描画します。Span
TextView
<h2>
Android のすべての HTML タグ ハンドラもこのように定義されています。
于 2013-08-09T08:54:15.297 に答える