gpt4 book ai didi

android - 奇怪的 TagHandler 行为检测开始和结束标签

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:40 26 4
gpt4 key购买 nike

我正在尝试使用 TextView 显示带有自定义标签的字符串文本:

字符串:

"<articlelink>text1</articlelink> padding<articlelink>text2</articlelink>"

其中 articlelink 是自定义标签。我使用自定义的 HTML.TagHandler 来处理标签:

private class MyTagHandler implements Html.TagHandler {

private int startIndex = 0;
private int endIndex = 0;

@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
if (tag.equals("articlelink")) {
if (opening) {
startIndex = output.length();
DebugLog.d("OPEN " + startIndex);
} else {
endIndex = output.length();
DebugLog.d("END " + endIndex);
MyClickableSpan span = new MyClickableSpan();
output.setSpan(span, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
}

但是日志是:

OPEN 0
OPEN 13
END 18
END 18

但是,在我在字符串之前插入一个字符之后,输出结果就是我所期望的:

字符串:

"a<articlelink>text1</articlelink> padding<articlelink>text2</articlelink>"

输出:

OPEN 1
END 6
OPEN 14
END 19

这里发生了什么?这是错误还是我误用了它?

最佳答案

我通过在字符串开头添加“zero width joiner”解决了这个问题

字符串看起来像:

"&zwj;<articlelink>text1</articlelink>padding<articlelink>text2</articlelink>"

在结果 TextView 中,这个符号不可见,文本看起来像原始字符串

关于android - 奇怪的 TagHandler 行为检测开始和结束标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com