Прокрутка TextViews не работает, когда все слова применены ClickableSpan - PullRequest
0 голосов
/ 21 января 2019

В Android TextView каждое слово представляет собой хэштег, который можно щелкнуть с помощью ClickableSpan для каждого слова.

Высота TextView установлена ​​на значение wrap-content, а для maxHeight установлено значение 150dp.

При нажатии нахэштеги внутри приложения 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 - это ArrayList всех хэштегов в eventHashTags.

...