C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Android Linkify ExampleThe Linkify class is used to create the links from the TextView or the Spannable. It converts the text and regular expression to the clickable links on the basis of the pattern match of text value and the regex. The Linkify class creates the links for web URL, email address, phone number, and map address by using pattern. Android clickable links can be created by two different ways: 1. Using layout (.xml) file: it uses autoLink attribute with the specified type. <TextView android:id="@+id/url" android:autoLink="web"/> 2. Using Java class: it uses the addlLinks() method with specified types of Linkify class. TextView webURL = new TextView(this); webURL.setText("https://www.yoururl1.com/"); Linkify.addLinks(webURL , Linkify.WEB_URLS); Android Linkify ExampleIn this example, we will create links for the web URL, email address and phone number. Create an activity_main.xml file in layout directory and add the following code. activity_main.xml<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.TheDeveloperBlog.com.androidlinkify.MainActivity"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="50dp"> </ListView> </RelativeLayout> Create a custom layout myList.xml file and add the following code. In this layout, we use autoLink attribute with the web, email, and phone property. myList.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/icon" android:layout_width="60dp" android:layout_height="60dp" android:padding="5dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/url" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Medium Text" android:autoLink="web" android:textStyle="bold" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:padding="2dp" android:textColor="#4d4d4d" /> <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:autoLink="email" android:layout_marginLeft="10dp"/> <TextView android:id="@+id/phonenumber" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:autoLink="phone" android:layout_marginLeft="10dp"/> </LinearLayout> </LinearLayout> Create an adapter class MyListActivity.java and extends ArrayAdapter<> with the following code. MyListActivity.javapackage example.TheDeveloperBlog.com.androidlinkify; import android.app.Activity; import android.text.util.Linkify; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class MyListAdapter extends ArrayAdapter<String> { private final Activity context; private final String[] url; private final String[] email; private final String[] phonenumber; private final Integer[] imgid; public MyListAdapter(Activity context, String[] url,String[] email,String[] phonenumber, Integer[] imgid) { super(context, R.layout.mylist, url); // TODO Auto-generated constructor stub this.context=context; this.url=url; this.email=email; this.phonenumber=phonenumber; this.imgid=imgid; } public View getView(int position, View view, ViewGroup parent) { LayoutInflater inflater=context.getLayoutInflater(); View rowView=inflater.inflate(R.layout.mylist, null,true); TextView titleText = (TextView) rowView.findViewById(R.id.url); TextView subtitleText = (TextView) rowView.findViewById(R.id.email); TextView phonenumberText = (TextView) rowView.findViewById(R.id.phonenumber); ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); imageView.setImageResource(imgid[position]); titleText.setText(url[position]); subtitleText.setText(email[position]); phonenumberText.setText(phonenumber[position]); Linkify.addLinks(phonenumberText,Linkify.PHONE_NUMBERS); return rowView; }; } Finally, in the MainActivity.java class, set the adapter instance to ListView. MianActivity.javapackage example.TheDeveloperBlog.com.androidlinkify; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends AppCompatActivity { ListView list; String[] urls ={ "https://www.yoururl1.com/","https://www.yoururl2.com/", "https://www.yoururl3.com/","https://www.yoururl4.com/", "https://www.yoururl5.com/","https://www.yoururl6.com/", "https://www.yoururl7.com/","https://www.yoururl8.com/", "https://www.yoururl9.com/","https://www.yoururl19.com/", }; String[] emails ={ "email_1@mail.com","email_2@mail.com", "email_3@mail.com","email_4@gmail.com", "email_5@mail.com","email_6@mail.com", "email_7@mail.com","email_8@mail.com", "email_9@gmail.com","email_10@mail.com" }; String[] phoneNumber ={ "+(1234)-567","+(1234)-567", "7563654321","9475000000","8575000000", "+1 (919) 555-1212","+91 (919) 555-1212", "6463654321","5475000000","8575000000", }; Integer[] imgid={ R.drawable.image_1,R.drawable.image_2, R.drawable.image_3,R.drawable.image_4, R.drawable.image_5, R.drawable.image_6, R.drawable.image_7,R.drawable.image_8, R.drawable.image_9,R.drawable.image_10, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyListAdapter adapter=new MyListAdapter(this, urls, emails,phoneNumber,imgid); list= findViewById(R.id.list); list.setAdapter(adapter); } } Output:
Next TopicIntro Slider
|