【发布时间】:2015-07-18 11:32:40
【问题描述】:
我正在向我的应用程序添加富文本编辑字段。我正在使用标准的 EditText 字段,并且添加了一个工具栏,其中包含一些将跨度应用于所选文本的编辑按钮。这部分工作正常。
当我通过点击 EditText 的不同部分来更改文本选择时,我希望我的按钮通过突出显示所选文本是否已经匹配该格式来反映当前状态。例如,如果我点击一些粗体文本,粗体按钮应该突出显示。这部分也可以正常工作,但有以下例外:
有时在我编辑文本时,Android 会为单词添加下划线,颜色与文本颜色相同。这不是拼写错误下划线;我认为这是为了帮助选择单词,但我不确定它的目的是什么。问题是 Android 使用 Spannable 添加下划线,我的下划线按钮可以看到,并认为该单词已应用下划线样式,因此我的按钮在不应该激活时激活。
我的按钮使用此代码查看所选文本是否带下划线:
if (text.getSpans(selStart, selEnd, UnderlineSpan.class).length > 0) {
isUnderlined = true;
}
我尝试查看下划线跨度的属性,但两种跨度的属性始终相同:
for (UnderlineSpan span : text.getSpans(selStart, selEnd, UnderlineSpan.class)) {
Log.d("FormatToolbar", "found underline span: " + span.getUnderlying() + ", " + span.getSpanTypeId() + ", " + span.describeContents() + ", " + span.toString());
}
有什么方法可以区分我添加到文本中的下划线跨度和 Android 在我选择文本的不同部分时添加的临时跨度?
【问题讨论】:
标签: android android-edittext richtext spannable