Skip to content
AutoLinkTextView is a TextView that supports automatic detection of Hashtags (#), Mentions (@) , URLs (http://), Phone Nubers and emails
Kotlin
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
autolinklibrary
gradle/wrapper
screens
.gitignore
README.md
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

AutoLinkTextView V2

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

.

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
    }
}

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

MODE_HASHTAG

MODE_URL

MODE_MENTION

MODE_EMAIL

MODE_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)

Contact 📖

▶️ Email: chatikyana@gmail.com

▶️ Linkedin: https://www.linkedin.com/in/chatikyan

▶️ Medium: https://medium.com/@chatikyan

▶️ Twitter: https://twitter.com/ArmanChatikyan

▶️ Website: https://armcha.github.io/

License

  Auto Link TextView V2 library for Android
  Copyright (c) 2019 Arman Chatikyan (https://github.com/armcha/AutoLinkTextViewV2).

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
You can’t perform that action at this time.