Search code examples
androidemailtexthyperlinkandroid-alertdialog

How to add email link to layout xml, Android


I have an xml file I use to show the About AlertDialog in my App. I was able to have an area of text from a text resource, and an image to the right of the text. Now I need to add the support email and possible home website address to the text. But I need it to be clickable. So clicking on the email will send an email and clicking on the website will open the browser. How do I add those linked text?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:weightSum="1" android:orientation="horizontal" android:baselineAligned="true">
    <TextView android:text="@string/AboutString" android:layout_gravity="center_horizontal" android:id="@+id/textView1" android:layout_height="173dp" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:drawableRight="@drawable/explain"></TextView>
</LinearLayout>

EDIT: The solution I chose:

                View layout = inflater.inflate(R.layout.about, null);
                Pattern p = Pattern.compile("[email protected]");
                String Scheme = "mailto:[email protected]";
                Linkify.addLinks((TextView)layout.findViewById(R.id.textView1), p, Scheme);

Solution

  • You need to linkify your text. Here is an example from that article showing how to add links when a WikiWord is found:

    Pattern wikiWordMatcher = Pattern.compile("\\b[A-Z]+[a-z0-9]+[A-Z][A-Za-z0-9]+\\b");
    String wikiViewURL =    "content://com.google.android.wikinotes.db.wikinotes/wikinotes/";
    Linkify.addLinks(noteView, wikiWordMatcher, wikiViewURL);