AutoLinkTextViewV2

AutoLinkTextView is a TextView that supports automatic detection of Hashtags (#), Mentions (@) , URLs (http://), Phone Nubers and emails.

AutoLinkTextViewV2 is the new version of the [AutoLinkTextView].

The main differences between the old and new version are

  • Fully migration to Kotlin
  • Added several new features
  • Some improvements and fixes

It supports automatic detection and click handling for

  • Hashtags (#)
  • Mentions (@)
  • URLs (http://)
  • Phone Numbers
  • Emails
  • Custom Regex

static

static_gif

The current minSDK version is API level 16.

Download sample apk

Features

  • Default support for Hashtag, Mention, Link, Phone number and Email
  • Support for custom types via regex
  • Transform url to short clickable text
  • Ability to apply multiple spans to any mode
  • Ability to set specific text color
  • Ability to set pressed state color

Download

Gradle:

implementation 'com.github.armcha:AutoLinkTextViewV2:2.1.1'

Setup and Usage

Add AutoLinkTextView to your layout

<io.github.armcha.autolink.AutoLinkTextView
    android:id="@+id/autolinkTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
val autoLinkTextView = findViewById<AutoLinkTextView>(R.id.autolinkTextView);

Add one or multiple modes

autoLinkTextView.addAutoLinkMode(
                MODE_HASHTAG,
                MODE_URL)

Add url transformations for transforming them to short clickable text

autoLinkTextView.addUrlTransformations(
                "https://google.com" to "Google",
                "https://en.wikipedia.org/wiki/Wear_OS" to "Wear OS")

Or you can attach urlProcessor and transform it

autoLinkTextView.attachUrlProcessor { originalUrl: String ->
    when {
        originalUrl.startsWith("https://en.wikipedia") -> "Wiki"
        originalUrl.contains("android") -> "Android"
        else -> originalUrl
    }
}

transformation_before

transformation_after


Add one or multiple spans to specific mode

autoLinkTextView.addSpan(MODE_URL, StyleSpan(Typeface.ITALIC), UnderlineSpan())
autoLinkTextView.addSpan(MODE_HASHTAG, UnderlineSpan(), TypefaceSpan("monospace"))

Set AutoLinkTextView click listener

autoLinkTextView.onAutoLinkClick { item: AutoLinkItem ->
}

Set text to AutoLinkTextView

autoLinkTextView.text = getString(R.string.android_text)

Customizing

All possible modes

MODE_PHONE

phone

MODE_HASHTAG

hashtag

MODE_URL

url

MODE_MENTION

mention

MODE_EMAIL

gmail

MODE_CUSTOM

custom

For use of custom mode add custom regex

val custom = MODE_CUSTOM("\\sAndroid\\b")

You can change text color for the specific mode

autoLinkTextView.hashTagModeColor = ContextCompat.getColor(this, R.color.color2)
autoLinkTextView.phoneModeColor = ContextCompat.getColor(this, R.color.color3)

You can also change pressed text color

autoLinkTextView.pressedTextColor = ContextCompat.getColor(this, R.color.pressedTextColor)

GitHub