Androidでハイパーリンクテキストビューを作成する


80

Googleのようなテキストビューテキストへのリンクを作成したい。とにかくこのようなリンクを作ることはありますか?(ie)Googleという単語をクリックすると、適切なリンクが開きます。どんなアイデアでも大歓迎です。




1
Linkify.addLinks(TextView、Linkify.ALL);を使用するだけです。
AndroidGeek 2014

回答:


135

これを試して、何が起こるか教えてください。

Javaコードの使用:

TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));

APIレベル> = 24以降Html.fromHtml(String source)は非推奨になりfromHtml(String, int)、代わりに、を使用します。

textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));

または、レイアウトxmlファイル内のTextViewウィジェット属性内

android:autoLink="web"
android:linksClickable="true"

期待どおりの出力が得られました。回答ありがとうございます
Srinivas 2012

1
ハイパーリンクテキストがstrings.xmlに存在する場合、提案された回答はどれも機能していません。それは非常に奇妙な方法で動作します。レイアウトxmlでテキストを直接設定すると機能しますが、Javaコードでテキストビューデータを設定すると機能しません。
Velu

2
Javaコードを使用する場合はandroid:autoLink="web"、XMLから削除する必要があることを述べておいてください。私は両方を持っていましたが、うまくいきませんでした。
アントニス・パパダキス

53

android:autoLink="web"TextViewのxmlで使用します。クリック可能なURLを自動的に変換する必要があります(テキストで見つかった場合)


14
android:linksClickable = "true"も含める
Ajith Memana 2013

この場合、リンクを配置する@waqaslam。
ガーグさん

1
@ Garg'sハイパーリンクが含まれている可能性があるのは、textviewに設定したテキストです
waqaslam 2016

28

すべてのテスト済みで動作する100%
ソリューション:android:autoLink="web"
以下は完全な

サンプルレイアウト Xmlの例です

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

string.xmlの文字列

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>

3
この行を> cleverfinger.com.au/user-guide/ </a> </ string >に変更すると、次のような
異なる

2
これは、テキストに次のような完全なURLが含まれている場合にのみ機能します:www.something.com
Rahul Tiwari 2015

7

これは、Textviewのデフォルトプロパティを使用して行うこともできます

android:autoLink="email"

5

注:-Html.fromHtmlはAndroidNでは非推奨です

あなたAndroid NはAndroidのチェックとサポート以上のバージョンを行う必要があります

                  //Set clickable true
                 tagHeading.setClickable(true);
                 
                  //Handlle click event
                  tagHeading.setMovementMethod(LinkMovementMethod.getInstance());

                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
                } else {
                    tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
                }
 

あるいは

プログラムでTextViewにautoLinkフラグを追加することはできません。

android:autoLink = "web"

android:linksClickable = "true"

この方法では、<a href='somelink'>タグを追加する必要はありません。

これは不利な点です。追加hyperlinkしたい場合は、textこの方法では実行できません。たとえば、次のようなことはできません。- [ hiteshsahu ] [1]

           <TextView
                android:id="@+id/tag_info"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tag_ll"
                android:layout_gravity="left"
                android:layout_margin="10dp"
                android:autoLink="web"
                android:linksClickable="true"
                android:text="https://github.com/hiteshsahu"
                android:textColor="@color/secondary_text" />

両方のアプローチの結果:-

https://github.com/hiteshsahu


1

SDKの最新バージョンfromHtmlは非推奨です以下の行を使用してください

String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
    if (Build.VERSION.SDK_INT >= 24) {
        textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
    } else {
        textView.setText(Html.fromHtml(yourtext));
    }

0

テキストビューの以下の拡張機能を作成しました。

@SuppressLint("SetTextI18n")
fun TextView.makeHyperLink(url: String) {
    text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Html.fromHtml("<a href='${url}'>${text}</a>", Html.FROM_HTML_MODE_COMPACT)
    } else {
        Html.fromHtml("<a href='${url}'>${text}</a>")
    }
    movementMethod = LinkMovementMethod.getInstance()
    isClickable = true
}

このように呼ぶ

tvTos.makeHyperLink(tos_url)

テキストをパラメータとして渡すこともできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.