setSpan无法正常工作

时间:2018-04-10 08:44:32

标签: android

我正在尝试添加textview的超链接,这是我的代码..

if (hyperLinks.size()>0){
                    SpannableString text = new SpannableString(postContent);
                    for (int i = 0; i <hyperLinks.size() ; i++) {
                        int finalI = i;
                        ClickableSpan clickableSpan = new ClickableSpan() {
                            @Override
                            public void onClick(View view) {
                                ProfileActivity.start(PostActivity.this,hyperLinks.get(finalI).getId());
                            }
                        };
                        text.setSpan(clickableSpan, hyperLinks.get(i).getStart(), hyperLinks.get(i).getStart()
                                , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                    }

                    // make our ClickableSpans and URLSpans work
                    postContentTv.setMovementMethod(LinkMovementMethod.getInstance());
                    postContentTv.setText(text, TextView.BufferType.SPANNABLE);
                    postContentTv.setClickable(true);
                }

不起作用,在Texrview中既没有点击也没有更改颜色 我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

可点击区域的开始和结束完全相同,即hyperLinks.get(i).getStart(),因此没有可点击的区域。

问题在于这一行。

text.setSpan(clickableSpan,hyperLinks.get(i).getStart(),hyperLinks.get(i).getStart(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

第二个hyperLinks.get(i).getStart()(上面代码行中的第三个参数)应该类似于hyperLinks.get(i).getEnd(),假设您已经实现了getEnd()方法。否则它应该是一个至少比hyperLinks.get(i).getStart()更高值的整数。