我添加了这样的文字:
tv.setText("This is text created with StringBuilder");
然后我会跟踪用户长时间点击的单词,并希望在短时间内突出显示该单词:
tv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int offset = tv.getOffsetForPosition(coordinates.get(0), coordinates.get(1));
int[] offsets = getWordOffsets(text.toString(), offset);
int startOffset = offsets[0];
int endOffset = offsets[1];
// here I want to highlight the word starting from startOffset to endOffset
我已经读过我应该使用SpannableString
,但是大多数示例都表明我应该使用整个文本创建新的SpannableString
,然后我可以为其中的一部分添加样式。有没有办法在TextView
spannable中创建部分文本?或者我应该从SpannableString
内容创建新的TextView
字符串,并在每次触发长按事件时设置跨度?
答案 0 :(得分:1)
你可以使用一些倒数计时器
//___ HIGHLIGHT HERE ______
new CountDownTimer(500,500){
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//___ UN HIGHLIGHT HERE ______
}
}.start();
并且突出显示您可以使用类似
的内容textView.setText(Html.fromHtml("<font color='#FF0000'>text</font>"));