使用跨度可突出显示已经添加的文本的一部分



我添加了这样的文字:

tv.setText("This is text created with StringBuilder");

然后,我跟踪用户longclicks上的哪个单词,并希望在短时间内突出显示该字:

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跨度中制作一部分文本?或者我应该从TextView内容创建新的SpannableString字符串,并在每次触发长时间点击事件时设置跨度?

您可以使用一些倒数计时器

 //___ 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>"));

相关内容

  • 没有找到相关文章

最新更新