Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:Html.toHtml()在每个单词上添加Html标记_Java_Android_Html - Fatal编程技术网

Java Android:Html.toHtml()在每个单词上添加Html标记

Java Android:Html.toHtml()在每个单词上添加Html标记,java,android,html,Java,Android,Html,toHtml()分别对每个单词应用标记 原文: 你好,世界 Html.ToHtml()结果: 使用字体设置为字体。粗体或字体。斜体 我尝试了Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,但仍然没有用 这就是我在键入时在EditText中应用span的方式 protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { super.onTe

toHtml()分别对每个单词应用标记

原文: 你好,世界

Html.ToHtml()结果:

使用字体设置为
字体。粗体
字体。斜体

我尝试了
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
,但仍然没有用

这就是我在键入时在EditText中应用span的方式

protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
    super.onTextChanged(text, start, lengthBefore, lengthAfter);
    if (lengthAfter > lengthBefore)
        applyCurrentStyle(start, start + lengthAfter);
}
applyCurrentStyle():


需要明确的是,您的
StyleSpan
跨越了两个词?或者您是否有两个
StyleSpan
对象,每个单词一个?@commonware否,如果已经存在新的StyleSpan,我将避免使用。用代码更新了问题。
spannable.setSpan(new StyleSpan(typeFace), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
    super.onTextChanged(text, start, lengthBefore, lengthAfter);
    if (lengthAfter > lengthBefore)
        applyCurrentStyle(start, start + lengthAfter);
}
private void applyCurrentStyle(int startSpan, int endSpan) {
    for (Style style : mCurrentStyles) {
        boolean alreadyHas = false;
        switch (style) {
            case BOLD:
                for (StyleSpan span : getStyleSpans(Typeface.BOLD, startSpan, endSpan)) {
                    if (getText().getSpanEnd(span) == endSpan) {
                        alreadyHas = true;
                        break;
                    }
                }
                if (!alreadyHas)
                    setStyleSpan(Typeface.BOLD, startSpan, endSpan);
                break;
            case ITALIC:
                for (StyleSpan span : getStyleSpans(Typeface.ITALIC, startSpan, endSpan)) {
                    if (getText().getSpanEnd(span) == endSpan) {
                        alreadyHas = true;
                        break;
                    }
                }
                if (!alreadyHas)
                    setStyleSpan(Typeface.ITALIC, startSpan, endSpan);
                break;
        }
    }
}