Home > Enterprise >  How to apply custom font, under line some part of text and make it clickable?
How to apply custom font, under line some part of text and make it clickable?

Time:01-04

I am struggling with this issue since 1 day. I want to apply custom font(in xml i am adding as fontFamily) to a textview. And also add apply underline for specific words in that textview with hyperlink and custom color.

I tried multiple ways like HTML text with Html.fromHTML(), Custom textview with Paint(), SpannableBuilder etc. Everytime either I can apply underline with clickable link and without custom font or I can apply only custom font but not underline(In some devices like Samsung, Motorola etc devices only).

CodePudding user response:

I use SpannableStringBuilder to make part of the string Bold, Underline, Clickable, etc.

val spannable = SpannableStringBuilder("My String to Underline")
val span = StyleSpan(Typeface.UNDERLINE)
// 14 is the start position and 22 is the end position
spannable.setSpan(span, 14, 22,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

To create a link.

val clickableSpan: ClickableSpan = object : ClickableSpan() {
                override fun onClick(widget: View) {
                    // Do Something
                }
            }
spannable.setSpan(clickableSpan, <Start Position>, <End Position>, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
           
// Change the color
spannable.setSpan(ForegroundColorSpan(ContextCompat.getColor(context, R.color.colorBlack)), <Start Position>, <End Position>, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
// Make it Bold
spannable.setSpan(StyleSpan(Typeface.BOLD), <Start Position>, <End Position>, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

CodePudding user response:

Finally achieved my requirement using AwsomeTextHandler-Github library.

  •  Tags:  
  • Related