我添加这样的文本:

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中的文本一部分可扩展吗?还是应该在每次触发长点击事件时从SpannableString内容创建新的TextView字符串并设置跨度?

最佳答案

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

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

09-28 12:16
查看更多