web-dev-qa-db-ja.com

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

Google のようなtextviewテキストのリンクを作成したい。とにかくこのようなリンクを作成する方法はありますか。 (つまり)Word Googleをクリックすると、適切なリンクが開きます。どんなアイデアでも大歓迎です。

66
Srinivas

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

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));
_

24以上のAPIレベルからHtml.fromHtml(String source)は廃止され、代わりにfromHtml(String, int)を使用します。

_textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
_

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

_Android:autoLink="web"
Android:linksClickable="true"
_
113
user370305

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

51
waqaslam

すべてテスト済みで動作中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:[email protected]?Subject=Lost%20Password" target="_top">[email protected]</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>
26
Shanewaj

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

Android:autoLink="email"
6

注:-Html.fromHtmlはAndroid Nで非推奨になりました

AndroidのAndroid N以降のバージョンを確認してサポートする必要があります

                  //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'>タグを追加する必要はありません。

欠点は、hyperlinktextを追加したい場合、この方法ではできません。たとえば、次のようなことはできません:-[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/hiteshsah

4
Hitesh Sahu

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));
    }
1
Rohan Pawar