Git Product home page Git Product logo

autolinktextview's Introduction

AutoLinkTextView

Android Arsenal

Deprecated

Please use the new version of AutoLinkTextView

AutoLinkTextView is TextView that supports Hashtags (#), Mentions (@) , URLs (http://), Phone and Email automatically detecting and ability to handle clicks.

The current minSDK version is API level 14 Android 4.0 (ICE CREAM SANDWICH).

Download sample apk

Features

  • Default support for Hashtag, Mention, Link, Phone number and Email
  • Support for custom types via regex
  • Ability to set text color
  • Ability to set pressed state color
  • Ability to make specific modes bold

Download

Gradle:

compile 'com.github.armcha:AutoLinkTextView:0.3.0'

Setup and usage

Add AutoLinkTextView to your layout

    <com.luseen.autolinklibrary.AutoLinkTextView
         android:id="@+id/active"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
AutoLinkTextView autoLinkTextView = (AutoLinkTextView) findViewById(R.id.active);

Set up mode or modes

autoLinkTextView.addAutoLinkMode(
                AutoLinkMode.MODE_PHONE);

Set text to AutoLinkTextView

autoLinkTextView.setAutoLinkText(getString(R.string.long_text));

Set AutoLinkTextView click listener

autoLinkTextView.setAutoLinkOnClickListener(new AutoLinkOnClickListener() {
            @Override
            public void onAutoLinkTextClick(AutoLinkMode autoLinkMode, String matchedText) {

            }
        });

Customizing

AutoLinkModes


AutoLinkMode.MODE_PHONE

AutoLinkMode.MODE_HASHTAG

AutoLinkMode.MODE_URL

AutoLinkMode.MODE_MENTION

AutoLinkMode.MODE_EMAIL

AutoLinkMode.MODE_CUSTOM

if you use custom mode, you should also add custom regex,

autoLinkTextView.setCustomRegex("\\sAllo\\b");

Note:Otherwise MODE_CUSTOM will return MODE_URL

You can also use multiple types

autoLinkTextView.addAutoLinkMode(
                AutoLinkMode.MODE_HASHTAG,
                AutoLinkMode.MODE_PHONE,
                AutoLinkMode.MODE_URL,
                AutoLinkMode.MODE_MENTION,
                AutoLinkMode.MODE_CUSTOM);

You can also change text color for autoLink mode

autoLinkTextView.setHashtagModeColor(ContextCompat.getColor(this, R.color.yourColor));
autoLinkTextView.setPhoneModeColor(ContextCompat.getColor(this, R.color.yourColor));
autoLinkTextView.setCustomModeColor(ContextCompat.getColor(this, R.color.yourColor));
autoLinkTextView.setUrlModeColor(ContextCompat.getColor(this, R.color.yourColor));
autoLinkTextView.setMentionModeColor(ContextCompat.getColor(this, R.color.yourColor));
autoLinkTextView.setEmailModeColor(ContextCompat.getColor(this, R.color.yourColor));

And also autoLink text pressed state color

autoLinkTextView.setSelectedStateColor(ContextCompat.getColor(this, R.color.yourColor));

Set modes that should be bold

autoLinkTextView.setBoldAutoLinkModes(
  AutoLinkMode.MODE_HASHTAG,
  AutoLinkMode.MODE_PHONE,
  AutoLinkMode.MODE_URL,
  AutoLinkMode.MODE_EMAIL,
  AutoLinkMode.MODE_MENTION
);

Enable under line

autoLinkTextView.enableUnderLine();

Contact 📖

▶️ Email: [email protected]

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

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

▶️ Google+: https://plus.google.com/+ArmanChatikyan

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

License

  Auto Link TextView library for Android
  Copyright (c) 2018 Arman Chatikyan (https://github.com/armcha/AutoLinkTextView).

  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.

autolinktextview's People

Contributors

ahmetcj4 avatar armcha avatar jakewoki avatar liamcottle avatar rockystevejobs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

autolinktextview's Issues

Multiple regex for two string

How can I add two regex:
autoLinkTextView.setCustomRegex("\sTerms of Service\b");
autoLinkTextView.setCustomRegex("\sPrivacy Policy\b");

FR: Read More Link

I have a feature request for read more link to truncated text that expands text on click?

can i show mention name without showing @

I need to show mention name without showing @ and also need click event. can you please help me and also wants to know should i set multiple custom AutoLinkMode in single textview?

AutoLinkTextView in RecyclerView Items

Hello, @armcha . Firstly, Thank you for your AutoLinkTextView. I used it in my viewholder of recyclerview. But, it never trigger to setAutoLinkOnClickListener event. I already debugged.

Comment comment=commentList.get(position); commentHolder.txtComment.addAutoLinkMode( AutoLinkMode.MODE_HASHTAG, AutoLinkMode.MODE_PHONE, AutoLinkMode.MODE_URL, AutoLinkMode.MODE_EMAIL, AutoLinkMode.MODE_MENTION); commentHolder.txtComment.setUrlModeColor(ContextCompat.getColor(context, R.color.colorAccent)); commentHolder.txtComment.enableUnderLine(); commentHolder.txtComment.setText(comment.getContent()); commentHolder.txtComment.setAutoLinkOnClickListener(new AutoLinkOnClickListener() { @Override public void onAutoLinkTextClick(AutoLinkMode autoLinkMode, String matchedText) { Toast.makeText(context,autoLinkMode.toString()+" "+matchedText,Toast.LENGTH_SHORT).show(); } });

How to bold a certain mode

Hello i have used your view it is working fine but i want to bold specific view type. how can i implement this as this method not working setBoldAutoLinkModes on latest gradel

migration to maven

as Jcenter is deprecated and soon be deleted, can you migrate you repo?

crash on fabric

LinkTouchMovementMethod (Deobfuscated class name)
com.luseen.autolinklibrary.LinkTouchMovementMethod.getPressedSpan
( Fatal Exception: java.lang.ArrayIndexOutOfBoundsException
length=48; index=48 )

How to handle 2 types of clicks on autolinktextview?

Hi, i am using this library to display hashtags in listview. working perfectly fine. But i want two types of clicks for AutoLinkTextview.

  1. when clicked on hashtag in AutoLinkTextview - Working perfect
  2. when clicked on AutoLinkTextview (not on Hashtag, side of hashtag) - Need to navigate to detail page. (it's not happening)
    how to achieve this? Thank you.

Read More Link

Please it will be awesome if you add the read more link Thank you

Can we include letters as part of the recognition of phone numbers?

It would be great if we could include letters as recognizable as part of the phone number pattern. I know that android.util.Patterns.PHONE doesn't cover this, but it should be easy enough to come up with a custom pattern to allow letters, at least in the non area code part of the phone number.

I tried to use it but it's not changing the text color.

JAVA

content.addAutoLinkMode(
                AutoLinkMode.MODE_HASHTAG,
                AutoLinkMode.MODE_PHONE,
                AutoLinkMode.MODE_URL,
                AutoLinkMode.MODE_EMAIL,
                AutoLinkMode.MODE_MENTION);

        content.setHashtagModeColor(ContextCompat.getColor(this, R.color.colorBlueType1));
        content.setEmailModeColor(ContextCompat.getColor(this, R.color.colorBlueType1));
        content.setMentionModeColor(ContextCompat.getColor(this, R.color.colorBlueType1));
        content.setUrlModeColor(ContextCompat.getColor(this, R.color.colorBlueType1));

        content.setText("Enter Content www.gmail.com @the #hkjhs [email protected]");

XML

<LinearLayout
        android:id="@+id/editPart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/headPart">

        <com.luseen.autolinklibrary.AutoLinkTextView
            android:padding="8dp"
            android:id="@+id/body"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLength="280"/>

    </LinearLayout>

IMG_20190520_152937 1

Not Supporting HTML Text

I am trying to set HTML type in my TextView like

tvComment.setAutoLinkText(Html.fromHtml(message));

But this is not supporting

Looking forward for help.

Specific mode as bold

The method :
public void setBoldAutoLinkModes(AutoLinkMode... autoLinkModes) {
mBoldAutoLinkModes = new ArrayList<>();
mBoldAutoLinkModes.addAll(Arrays.asList(autoLinkModes));
}

not sync using current version gradle
compile 'com.github.armcha:AutoLinkTextView:0.3.0'

NOTHING HAPPEN IN ADAPTER

I implement this code in adapter, but the color not change

tvContent = (AutoLinkTextView) itemView.findViewById(R.id.tv_q_content);

        tvContent.addAutoLinkMode(
                AutoLinkMode.MODE_HASHTAG,
                AutoLinkMode.MODE_PHONE,
                AutoLinkMode.MODE_URL,
                AutoLinkMode.MODE_MENTION,
                AutoLinkMode.MODE_CUSTOM);
        tvContent.setCustomRegex("\\sAllo\\b");

        tvContent.setHashtagModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setPhoneModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setCustomModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setUrlModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setMentionModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setEmailModeColor(ContextCompat.getColor(mContext, R.color.instagram));
        tvContent.setSelectedStateColor(ContextCompat.getColor(mContext, R.color.instagram));

Make all the auto links BOLD

Hi, thanks for this awesome library.You saved me hours of work. Is there a way I can make all the autolinks to be BOLD. Example #conversation Thanks.

Unable to apply Ellipsize property

Applied a ellipsize property to the autolinktextview, but it is not apllied in the actual application instead the autolinktextview becomes scrollable

<com.luseen.autolinklibrary.AutoLinkTextView
android:id="@+id/tv_reason"
android:layout_width="0dp"
android:paddingLeft="@dimen/padding_tiny"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="2"
android:ellipsize="end"/>
screenshot_20180515-174203_climb

[Question] Why made AutoLinkTextView as final class

I was wondering why you have made AutoLinkTextView as final class which prevent from extending it for further customization. I wanted to extend your view and provide my own implementation for custom fonts.

For now I have fork your library and made these changes, It would be great if you can remove final in next release.

Too few method parameters?

public void setAutoLinkText(String text)Why can't there be one
This method public void setAutoLinkText(CharSequence text)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.