ClickableSpan onClickListener не вызывается - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать TextView, который содержит ссылку, чтобы открыть другое действие. ClickableSpan не называет это onClickListener как бы то ни было. Я искал похожие вопросы и не нашел решения, поэтому мне интересно, не является ли это чем-то особенным в моем коде. Я сделал несколько исправлений, я прочитал, что точное расположение параметра textView.movementMethod = LinkMovementMethod.getInstance() имеет значение. Мне интересно, если LinkMovementMethod является проблемой, так как я не присоединяю URL или что-то еще, просто другое действие? Я запускаю этот код в потоке пользовательского интерфейса во фрагменте

Вот текстовый код / ​​интерактивный код span:

val message : TextView = main_activity.findViewById(R.id.message)
                    val ss = SpannableString("Not finding what you're looking for? Try refining your search, or create your own group!")
                    val clickableSpan = object : ClickableSpan() {
                        override fun onClick(widget: View) {
                            widget.setOnClickListener {
                                Log.d("TEST","This should print but does not")
                            }
                        }

                        override fun updateDrawState(ds: TextPaint) {
                            super.updateDrawState(ds)
                            ds.isUnderlineText = true
                        }
                    }
                    ss.setSpan(clickableSpan, 66, 88, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
                    message.isClickable = true
                    message.linksClickable = true
                    message.textSize = 23.toFloat()
                    message.highlightColor = Color.TRANSPARENT
                    message.text = ss
                    message.movementMethod = LinkMovementMethod.getInstance()
                }

И текстовое представление в XML:

<TextView
        android:id="@+id/message"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.186" />

1 Ответ

0 голосов
/ 20 января 2020

Попробуйте сделать текстовое представление кликабельным

<TextView
  android:clickable="true"
  android:focusable="true"
  android:id="@+id/message"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...