Когда я щелкаю на отрезке в текстовом представлении edittext, на щелчок в текстовом представлении edittext и промежутке отвечают.Есть ли способ, которым может реагировать только onclick диапазона? - PullRequest
0 голосов
/ 24 июня 2019

вот пример кода

val span = SpannableString("test test test simple text ")

span.setSpan(object : ClickableSpan() {
    override fun onClick(v: View) {
         Log.i("onClick", "span")
        }
    }, 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

editTv.text = span
editTv.setOnClickListener {
     Log.i("onClick","tv")
}

editTv.setMovementMethod(LinkMovementMethod.getInstance());

в этом случае, когда я выбираю кликабельный промежуток (5 ~ 9), реагирует как на нажатие текстового представления, так и на щелчок промежутка ... как я могу получить ответ только на щелчок промежутка ???

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Ну, так как вы хотите, чтобы оба onClicks работали для их назначенных областей касания, вы можете реализовать несколько ClickableSpan и удалить общий tv.setOnClickListener, который вы установили в конце.

Примерно так:

Скажем, например, ваша строка: "слово1 слово2 слово3 слово4"

ClickableSpan1 будет обрабатывать onClick для word1

ClickableSpan2 будет обрабатывать onClick для word2 и word3

ClickableSpan3 будет обрабатывать onClick для word4

Проверьте приведенный ниже пример кода. Вы также можете соответствующим образом оформить каждый кликабельный диапазон https://stackoverflow.com/a/22006998/2607144

0 голосов
/ 24 июня 2019

Есть ли способ, которым может реагировать только онклик пролета?

Затем вы можете поставить условие, когда на него будет реагировать клик пролета.

Если у вас есть оба текстовых представления onClickListener и слушатель Span Click. тогда обе функции будут работать в зависимости от того, что они были разработаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...