Вот что я пытаюсь сделать,
SpannableString s = new SpannableString("Shiva");
s.setSpan(new RelativeSizeSpan(2f), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(s, TextView.BufferType.SPANNABLE);
И на событии Click, im пытается преобразовать его в HTML, по этому коду
Log.d("SampleApp",Html.toHtml(editText.getText()));
Я ожидаю некоторых
<h1> or <h2> tag
Но я вижу это
<p dir=ltr>Shiva</p>
Пожалуйста, помогите мне, если сможете.
Другой способ - использовать AbsoluteSizeSpan.class
s.setSpan (новый AbsoluteSizeSpan (14), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
это вернет что-то вроде: <font size = "2"> Shiva </font>
Html.toHtml вернет содержимое в <p>
или <div>
Вы смотрите исходный код Html.toHtml?
Проверьте следующий код, я вытащил этот код из последней версии Android 4.3. вы можете видеть, что вызов функцииHTML внутри внутриHtml и внутриHtml-функции просто поместил div вокруг диапазона и установил атрибут align.
public static String toHtml(Spanned text) {
StringBuilder out = new StringBuilder();
withinHtml(out, text);
return out.toString();
}
private static void withinHtml(StringBuilder out, Spanned text) {
int len = text.length();
int next;
for (int i = 0; i < text.length(); i = next) {
next = text.nextSpanTransition(i, len, ParagraphStyle.class);
ParagraphStyle[] style = text.getSpans(i, next, ParagraphStyle.class);
String elements = " ";
boolean needDiv = false;
for(int j = 0; j < style.length; j++) {
if (style[j] instanceof AlignmentSpan) {
Layout.Alignment align =
((AlignmentSpan) style[j]).getAlignment();
needDiv = true;
if (align == Layout.Alignment.ALIGN_CENTER) {
elements = "align=\"center\" " + elements;
} else if (align == Layout.Alignment.ALIGN_OPPOSITE) {
elements = "align=\"right\" " + elements;
} else {
elements = "align=\"left\" " + elements;
}
}
}
if (needDiv) {
out.append("<div ").append(elements).append(">");
}
withinDiv(out, text, i, next);
if (needDiv) {
out.append("</div>");
}
}
}