How to set the part of the text view is clickable

后端 未结 20 1450
无人共我
无人共我 2020-11-22 01:29

I have the text \"Android is a Software stack\". In this text i want to set the \"stack\" text is clickable. in the sense if you click on t

20条回答
  •  我寻月下人不归
    2020-11-22 02:31

    My function for make multiple links inside TextView

    fun TextView.makeLinks(vararg links: Pair) {
        val spannableString = SpannableString(this.text)
        for (link in links) {
            val clickableSpan = object : ClickableSpan() {
    
                override fun updateDrawState(textPaint: TextPaint) {
                     // use this to change the link color
                     textPaint.color = textPaint.linkColor
                     // toggle below value to enable/disable
                     // the underline shown below the clickable text
                     textPaint.isUnderlineText = true
                }
    
                override fun onClick(view: View) {
                    Selection.setSelection((view as TextView).text as Spannable, 0)
                    view.invalidate()
                    link.second.onClick(view)
                }
            }
            val startIndexOfLink = this.text.toString().indexOf(link.first)
            spannableString.setSpan(clickableSpan, startIndexOfLink, startIndexOfLink + link.first.length,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        }
        this.movementMethod = LinkMovementMethod.getInstance() // without LinkMovementMethod, link can not click
        this.setText(spannableString, TextView.BufferType.SPANNABLE)
    }
    

    USING

    my_text_view.makeLinks(
            Pair("Terms of Service", View.OnClickListener {
                Toast.makeText(applicationContext, "Terms of Service Clicked", Toast.LENGTH_SHORT).show()
            }),
            Pair("Privacy Policy", View.OnClickListener {
                Toast.makeText(applicationContext, "Privacy Policy Clicked", Toast.LENGTH_SHORT).show()
            }))
    

    XML

    
    

    DEMO

    Reference

    Solution for clear the link highlight selection follow https://stackoverflow.com/a/19445108/5381331

提交回复
热议问题