当应用所有单词时,TextViews滚动不起作用ClickableSpan

时间:2019-01-21 11:12:07

标签: android textview clickablespan

在Android TextView中,每个单词都是一个标签,可以使用ClickableSpan为每个单词点击。

TextView的高度设置为wrap-content,maxHeight设置为150dp。

在textview应用中单击主题标签时,可以正确导航到相应页面。

问题是,当我尝试滚动textView时,它不会滚动。不管我抬起手指在哪个标签上,它都会为该标签注册一次点击。

当上下滚动textview时如何阻止标签的点击?

 SpannableString strClickableHashTags = new SpannableString(eventHashTags);
            int startIndex = 0;
            int endIndex = 0;
            for(String hashTag : listHashTags){
                ClickableSpan clickableSpan = new ClickableSpan() {
                    @Override
                    public void onClick(View widget) {
                        TextView hashTagView = (TextView) widget;
                        Spanned spannedText = (Spanned) hashTagView.getText();
                        int startIndex = spannedText.getSpanStart(this);
                        int endIndex = spannedText.getSpanEnd(this);
                        String hashTag = (spannedText.subSequence(startIndex, endIndex)).toString();
                        if(hashTag.startsWith("#")){
                            openSearchPageForHashTag(hashTag);
                        }
                        else if(hashTag.startsWith("@")){
                            openSearchPageForUserSearch(hashTag);
                        }
                    }

                    @Override
                    public void updateDrawState(TextPaint ds) {
                        super.updateDrawState(ds);
                        ds.setUnderlineText(false);
                    }
                };
                ForegroundColorSpan fcs = new ForegroundColorSpan(Color.WHITE);

                startIndex = eventHashTags.indexOf(hashTag, endIndex);
                endIndex = startIndex + hashTag.length();
                strClickableHashTags.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                strClickableHashTags.setSpan(fcs, startIndex, endIndex, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
            }

            textHashTags.setText(strClickableHashTags);
            textHashTags.setMovementMethod(LinkMovementMethod.getInstance());
            textHashTags.setHighlightColor(Color.TRANSPARENT);
  1. eventHashTags是包含单个以空格分隔的主题标签的字符串。

  2. listHashTags是eventHashTags中所有主题标签的ArrayList。

0 个答案:

没有答案