我已经编写了一个代码,我可以在其中获取 Edittext 中的跨度数,例如粗斜体或下划线。
现在我得到一个文本文件,其中用粗体字符写了一些东西,并使用BufferedReader
我正在获取该文件的内容。是否有可能在该文件上也获得跨度?
这就是我从编辑文本中的字符串中获取跨度的方式。是否可以从 sd 卡上的文本文件中获取跨度?
Spannable ss = new SpannableString(text.getText()); // text is an EditText
if(text.getSelectionStart() - text.getSelectionEnd() == 0){
}
else{
int prologueStart=Integer.MAX_VALUE;
int epilogueEnd=-1;
for (UnderlineSpan span : getUnderlineSpans(ss, text.getSelectionStart(),text.getSelectionEnd())){
int spanStart=ss.getSpanStart(span);
if (spanStart < text.getSelectionStart()) {
prologueStart=Math.min(prologueStart, spanStart);
}
int spanEnd=ss.getSpanEnd(span);
if (spanEnd > text.getSelectionEnd()) {
epilogueEnd=Math.max(epilogueEnd, spanEnd);
}
ss.removeSpan(span);
}
if (prologueStart < Integer.MAX_VALUE) {
ss.setSpan(new UnderlineSpan(), prologueStart,
text.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
if (epilogueEnd > -1) {
ss.setSpan(new UnderlineSpan(), text.getSelectionEnd(), epilogueEnd,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
text.setText(ss);
text.setSelection(cursorPosition);
protected UnderlineSpan[] getUnderlineSpans(Spannable ss, int selectionStart,
int selectionEnd) {
return(ss.getSpans(selectionStart, selectionEnd, UnderlineSpan.class));
}