TextViewのリンクをクリック可能にする方法は?


1004

次のTextViewが定義されています。

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="@string/txtCredits"
    android:autoLink="web" android:id="@+id/infoTxtCredits"
    android:layout_centerInParent="true"
    android:linksClickable="true"></TextView>

どこ@string/txtCredits含む文字列リソースがあります<a href="some site">Link text</a>

AndroidはTextViewのリンクを強調表示していますが、クリックに応答しません。誰かが私が間違っていることを教えてもらえますか?これのような単純なもののために、私のアクティビティでTextViewのonClickListenerを設定する必要がありますか?

文字列リソースを定義する方法と関係があるようです。これは動作しません:

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

しかし、これは:

<string name="txtCredits">www.google.com</string>

完全なURLを表示するよりもテキストリンクを表示したいので、これは残念です。


67
android:autoLink = "web"これはxmlに追加する必要があるメイン行であり、魅力のように機能します。
@Richardに

1
<string name = "txtCredits"> <a href=" google.com"> www.google.com </a> </ string >上記の文字列を使用すると機能します。href内の文字列とアンカータグ付きの文字列は同じである必要があり、.comまたは。*が機能している必要があることを確認する必要があります
Shaik Khader

<string name = "txtCredits">ここにテキストを入力してください<a href=" google.com"> Google </a> </ string >上記のスニペットの場合、「ここにテキストを入力してください」と表示されない場合、どうすればよいですか?
Ajay Takur


android:focusable="true"私の問題を解決しました
Khang .NT 2017

回答:


1228

APIデモに埋もれて、問題の解決策を見つけました。

Link.java:

    // text2 has links specified by putting <a> tags in the string
    // resource.  By default these links will appear but not
    // respond to user input.  To make them active, you need to
    // call setMovementMethod() on the TextView object.

    TextView t2 = (TextView) findViewById(R.id.text2);
    t2.setMovementMethod(LinkMovementMethod.getInstance());

デモの内容と一致するように、TextViewのほとんどの属性を削除しました。

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/txtCredits"/>

それで解決しました。明らかにして修正するのはかなり難しい。

重要autoLink="web"電話をかける場合は、忘れずに削除してくださいsetMovementMethod()


19
多分それは私だけかもしれませんが、なぜこれをEditTextで行うのですか?
ジャスティン

1
目標を達成するにはsetMovementMethodだけが必要であることがわかります。
superarts.org 2012

3
ほんとに、「setMovementMethod(LinkMovementMethod.getInstance())」を使用するとクラッシュするOS 4.3搭載のSamsung Galaxy S3をいくつか見たので、それを考慮に入れて、追加する前に検証を作成する必要がありました
ジョージアギラール

40
こっちも一緒。setMovementMethod()が呼び出された場合、XMLファイルからautolink = "web"を削除する必要があることに注意してください。そうしないと、リンクが機能しません。コメントをありがとう
voghDev 2014

6
例として、xmlで "autoLink"属性を使用してください:android:autoLink = "web"
Kalpesh

533

使用しているだけandroid:autoLink="web"で問題なく動作します。リンクをクリックするとブラウザが開き、正しいページが表示されます。

私が推測できることの1つは、他のビューがリンクの上にあるということです。透明なものは親全体を埋めますが、リンクの上には何も表示されません。この場合、クリックはリンクではなくこのビューに移動します。


3
上記の詳細情報を追加しました。文字列を<string name = "txtCredits"> <a href=" google.com"> Google </a> </ string > として定義する方法でしょうか?これは許可されているように見えますが、私にはうまくいきません。
Richard

6
linkify autoを使用する場合は、a href部分は必要ありません。OSは文字列を取得してURLを解析し、すべてのURLをクリック可能なリンクに変換します。ただし、これによってgoogleという単語がgoogle.comにリンクされることはありません。www.google.comをリンクとして表示します。
Janusz 2010

オートリンクの使用は私にとっても完璧に機能します。親なしのプレーンテキストビューです。
2011

2
android:autoLinkは、電話番号、住所、電子メールアドレス(または上記すべて)のリンクにも最適です。
CloudyMusic

54
いいえ、そうではありません。URLとは異なる表示テキストでアンカータグを使用したくない場合、この回答は機能しません
cprcrack

375

これに少し時間を費やした後、私はそれを発見しました:

  • android:autoLink="web"HTMLに完全なリンクがある場合に機能します。以下は青色で強調表示されており、クリック可能です。
  • 一部のテキスト <a href="http://www.google.com">http://www.google.com</a>
  • 一部のテキスト http://www.google.com
  • view.setMovementMethod(LinkMovementMethod.getInstance()); 以下で動作します(強調表示され、クリック可能になります):
  • 一部のテキスト <a href="http://www.google.com">http://www.google.com</a>
  • 一部のテキスト http://www.google.com
  • 一部のテキスト <a href="http://www.google.com">Go to Google</a>

3番目のオプションにはハイパーリンクがありますが、リンクの説明(タグの間の部分)自体はリンクではないことに注意してください。このようなリンクでandroid:autoLink="web"は機能しません

  • android:autoLink="web"XMLで設定すると上書きされますview.setMovementMethod(LinkMovementMethod.getInstance());(つまり、第3種のリンクは強調表示されますが、クリックできません)。

ストーリーの教訓はview.setMovementMethod(LinkMovementMethod.getInstance());コードでの使用であり、すべてのリンクをクリック可能にしandroid:autoLink="web"たい場合は、XMLレイアウトにないことを確認してください。


setMovementMethodは、あなたが言及した2番目のオプションでは機能しません。 google.com ..更新でか?
ダーパン2015年

16
<a href="http://www.google.com">Go to Google</a>autoLinkでは機能しないことを指摘していただきありがとうございます。SOについて非常に多くの回答があるため、これについて言及したのはこれだけです。ありがとうございました!
cwhsu 16

これは機能します。API 29でテスト済み。
Wrichik Basu

96

上記の解決策は私にとってはうまくいきませんでしたが、次の解決策はうまくいきました(そしてそれは少しすっきりしているようです)
まず、文字列リソースで、HTMLエンティティエンコーディングを使用してタグの開始シェブロンを定義します。

&lt;a href="http://www.google.com">Google&lt;/a>

およびNOT:

<a href="http://www.google.com">Google</a>

一般に、そのような文字列内のすべての山形をエンコードします。ところで、リンクはで始まる必要がありますhttp://

次に、(ここで提案されているように)TextViewでこのオプションを設定します。

 android:linksClickable="true"

最後に、コードで次のようにします。

((TextView) findViewById(R.id.your_text_view)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.your_text_view)).setText(Html.fromHtml(getResources().getString(R.string.string_with_links)));

それだけです。正規表現やその他の手動ハックは必要ありません。


7
これにより、このコードが実行されるたびにHTMLパーサーが作成されます。これを使用してリストアイテム内またはアプリ内の他のパフォーマンスが重要な場所にリンクを作成する場合は注意してください。リストアイテムの作成中に、これにより、getViewメソッドの実行時間が50%増加します
Janusz

1
また、URLのスペースを次のように置き換える必要があることに注意してください%20
Nicolas Tyler

<![CDATA[ ... ]]>タグで文字列をラップすることにより、エンティティエンコーディングの問題を回避できます。
Paul Lammertsma 2014

1
私のために働く、ありがとう。<![CDATA[...]]>タグを使用していません。
ricky.tribbia

これが答えになるはずです!私のネイティブアプリで完全によく働いた
アジャイKulkarniさん

69

私はこれを単純に使用しました

Linkify.addLinks(TextView, Linkify.ALL);

ここにあるリンクをクリック可能にします


4
この答えが一番です。すべてのAndroidバージョンで動作し、TextViewにテキストが設定されている場合は、そのメソッドを追加するだけです。ボーナス:クリック可能なカスタマイズ可能なリンクを追加できます
Kerwan

3
本当にシンプルでベストな答え。それは同時にメール/ウェブでも機能します。
イムランアーメド2015年

1
新しい高度な機能が必要な場合は、LinkifyCompatを使用してください
Vaiden

いいですね、<a href...クリックできないURLを作成します
Pavel

また、それに応じて、作業中のすべての「HTML」タグ、例えば、<B> ... </ b>をなどを作る
アレイ

67

HTMLのようなリンクを追加する場合は、次のことを行うだけです。

  • HTMLのような文字列を追加します。

     <string name="link"><a href="https://www.google.pl/">Google</a></string>
  • リンク固有の設定をまったく行わずに、ビューをレイアウトに追加します。

     <TextView
        android:id="@+id/link"
        android:text="@string/link" />`
  • プログラムで適切なMovementMethodをTextViewに追加します。

     mLink = (TextView) findViewById(R.id.link);
     if (mLink != null) {
       mLink.setMovementMethod(LinkMovementMethod.getInstance());
     }

それでおしまい!そして、はい、 "autoLink"や "linksClickable"などのオプションを明示的なリンクのみで動作させる(htmlタグにラップされない)ことは、私にとっても非常に誤解を招きやすい...


2
+1その通りです。これが一致するようにパターンを自分自身に入力するオプションがあるはずです。このように、それはかなりばかげています。
シュリンゲル2012

47

この行をに追加しましたTextViewandroid:autoLink="web"
以下は、レイアウトファイルでの使用例です。

layout.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/txtDefaultpassword"
        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>

36

以下は、Androidアプリ内でテキストとハイパーリンクの組み合わせを探しているすべての人に適しています。

string.xml

<string name="applink">Looking for Digital Visiting card? 
<a href="https://play.google.com/store/apps/details?id=com.themarkwebs.govcard">Get it here</a>
</string>

これstringで、次のViewような任意の場所でこれを利用できます。

<TextView
    android:id="@+id/getapp"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:textColor="@color/main_color_grey_600"
    android:textSize="15sp"
    android:text="@string/applink"/>

次に、アクティビティまたはフラグメントで、次の操作を行います。

TextView getapp =(TextView) findViewById(R.id.getapp);
getapp.setMovementMethod(LinkMovementMethod.getInstance());

今では、あなたが設定する必要はありませんandroid:autoLink="web"android:linksClickable="true"このアプローチ使用。

これがお役に立てば幸いです。


これはうまく機能しますが、開いたWebから押し戻す場合は、ブラウザーを閉じるだけで、アプリには戻りません。
Jachumbelechao Unto Mantekilla

27

これがお役に立てば幸いです。

String value = "<html>Visit my blog <a href=\"http://www.maxartists.com\">mysite</a> View <a href=\"sherif-activity://myactivity?author=sherif&nick=king\">myactivity</a> callback</html>";
    TextView text = (TextView) findViewById(R.id.text);


    text.setText(Html.fromHtml(value));
    text.setMovementMethod(LinkMovementMethod.getInstance());

3
これはうまくいきます。また、android:autoLink=?から必ず削除してくださいTextView
sulai 2013年

これが最終的に私のために働いたものです。有効なHTMLであり、使用しないことandroid:autoLink=?が重要です。
Neal Sanche 2013年

Xamarinの場合、単語は表示されますが下線が引かれておらず、上記のパラメーターではなく、上記のパラメーターを使用してクリックすることはできません。autoLink、linksClickable
maxweber

Xamarinの場合、それらを設定し、Textを設定するか、TextFormattedを設定すると、単語が生成されますが、クリック可能でも青/下線も付きません。autoLinkの削除も失敗します。linksClickableのみの削除も失敗します。両方を削除しても失敗します。
maxweber 2013年

helloWorld.TextFormatted = Html.FromHtml(linkURL); それらの有無にかかわらず、失敗します。(リンクされていない、青ではない、クリックできない)
maxweber

25

これをXMLのテキストビューに追加するために必要なものだけ

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autoLink="web"/>

24

私のために働いた最も簡単なことは、Linkifyを使用することです

TextView txt_Message = (TextView) view.findViewById(R.id.txt_message);
txt_Message.setText("This is link https://www.google.co.in/");
Linkify.addLinks(txt_Message, Linkify.WEB_URLS);

そして、それは自動的にtextviewのテキストからウェブURLを検出します。


本当ですが、クリックできません。
FractalBob 2017

リンクはクリック可能です。
Octavian Ionel 2017

19

Richard、次回は、このコードをTextViewのレイアウトXMLに追加する必要があります。

android:autoLink="all"

これはこのようになるはずです。

<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/txtCredits"
    android:id="@+id/infoTxtCredits"
    android:autoLink="all"
    android:linksClickable="true">
</TextView>

このコードを使用する必要はありません(t2.setMovementMethod(LinkMovementMethod.getInstance());リンクをクリック可能にするために、)。

また、ここでは真実です:あなたがセット限りとオートリンクlinksClickableを、でこれを追加することを忘れないでくださいstring.xmlをのクリック可能なリンクが機能するようにファイル。

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

3
うまくいきません。リンクは確かにクリック可能ですが、「Google」だけでなく、文字列全体が表示されます。実際、これまでのところ、ここでの回答やそれらの組み合わせのいずれも機能しません。
バイオレットキリン2013

デバイスまたはエミュレーターインターネットが有効になっていて、それをオン(wifi)に設定しているか、LANを接続していますか、@ Violet Giraffe?
David Dimalanta 2013年

そうです。XML属性だけを使用してリンクをクリック可能にすることはできず、そのためにJavaコードに頼らなければなりませんでした。これは大したことではありませんが、良くありません。
バイオレットキリン

18

linkifyを使用する Linkifyは、テキストと正規表現を取得し、テキスト内のすべての正規表現一致をクリック可能なリンクに変換します

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("http://www.domain.com");
Linkify.addLinks(textView, Linkify.WEB_URLS);

することを忘れないでください

import android.widget.TextView;

16

文字列が何であれ、データが何であれ、電話とURLをtextViewから選択可能にする非常に1行のAndroidコードを次に示します。このためにHTMLタグを使用する必要はありません。

TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText("some url is www.google.com phone 7504567890 another url lkgndflg.com ");

// Makes the textView's Phone and URL (hyperlink) select and go.
Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);

13

android:autoLink="web"このように使用していることに気づきました

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:autoLink="web"/>

URLについては問題なく機能しましたが、電子メールアドレスと電話番号もリンクしたいので、次のandroid:autoLink="all"ようにこの行を使用しました。

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:autoLink="all"/>

そしてそれは魅力のように働きました。


13

Linkifyテキストの色も管理 ここに画像の説明を入力してください

tv_customer_care_no.setLinkTextColor(getResources().getColor(R.color.blue));
  tv_customer_care_no.setText("For us to reach out to you, please fill the details below or contact our customer care at  18004190899 or visit our website http://www.dupont.co.in/corporate-links/contact-dupont.html ");
   Linkify.addLinks(tv_customer_care_no, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);
   Linkify.addLinks(tv_customer_care_no, Linkify.ALL );

11

必ずではない使用setAutoLinkMask(Linkify.ALL)使用している場合setMovementMethod(LinkMovementMethod.getInstance())Html.fromHTML()、適切にフォーマットされた上でHTML(例えば、リンク<a href="http://www.google.com/">Google</a>)。


10

これを使って...

TextView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent in=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com/"));
                        startActivity(in);
                    }

                });

マニフェストファイルに権限を追加する

<uses-permission android:name="android.permission.INTERNET"/>

1
これは機能しますが、アプリはこのクリック可能なTextViewを超えるインターネット権限を必要としない場合があることに注意してください。これらのケースでは多分やり過ぎかもしれません
Jose_GD 2013

2
それは本当に質問に関連していますか?
ダーパン2015年

2
これは質問には関係がありませんでした。
afollestad 2015

1
これは決して失敗しません!
スカイネット2015

完全なURLではなくアンカーテキストのみを表示できるため、この方法が好きです。アンカーテキストは、たとえば緑色に着色して下線を引くなどのスタイルを設定することもできます。
ロストベビー

10

あなたはこれだけが必要です:

android:autoLink="web"

この行をTextViewに挿入します。これは、Webを参照してクリックできます。このTextViewのテキストとして設定されたURLアドレス。

例:

 <TextView
    android:id="@+id/textViewWikiURL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textStyle="bold"
    android:text="http://www.wikipedia.org/"
    android:autoLink="web" />

10

受け入れられた答えは正しいですが、それは電話番号、地図、電子メールアドレス、および通常のリンクなどを意味します http://google.com、hrefタグがない場合)は、xmlに自動リンクを設定できないため、クリックできなくなります。

私が見つけたすべてをクリッカブルにする唯一の完全なソリューションは次のとおりです。

Spanned text = Html.fromHtml(myString);
URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);
SpannableString buffer = new SpannableString(text);
Linkify.addLinks(buffer, Linkify.ALL);
for (URLSpan span : currentSpans) {
    int end = text.getSpanEnd(span);
    int start = text.getSpanStart(span);
    buffer.setSpan(span, start, end, 0);
}
textView.setText(buffer);
textView.setMovementMethod(LinkMovementMethod.getInstance());

また、TextViewにはを含めないでくださいandroid:autolinkandroid:linksClickable="true"どちらも必要ありません。デフォルトではtrueです。


私にとってはこれがなくても機能しましたが、受け入れられた答えはうまくいきました@ケリーは問題が発生したAndroidのバージョンとデバイスを教えてもらえますか?
Akhil Dad 2016

myapp://スキームでは機能しません(ディープリンク用)。
CoolMind

7

これは、TextViewのクリック可能なリンクと表示可能なリンクを(コードによって)解決する方法です。

private void setAsLink(TextView view, String url){
        Pattern pattern = Pattern.compile(url);
        Linkify.addLinks(view, pattern, "http://");
        view.setText(Html.fromHtml("<a href='http://"+url+"'>http://"+url+"</a>"));
    }

しかし、テキストを見たいのですが、テキストをクリックすると、リンクにリダイレクトされます(ブラウザで開かれます)?この解決策はそれを解決しませんね?
Duc Tran

6

以下のコードを使用してください:

String html = "<a href=\"http://yourdomain.com\">Your Domain Name</a>"
TextView textview = (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(LinkMovementMethod.getInstance());
textview.setText(Html.fromHtml(html));

6

[Tested in Pre-lollipop as well as in Lollipop and above]

HTML文字列は、バックエンドまたはリソースファイルから取得できます。テキストをリソース文字列として配置する場合は、CDATAタグを必ず追加してください。

<string name="your_text">![CDATA[...<a href="your_link">Link Title</a>  ...]]</string>

次に、コードで文字列を取得してHTMLとして割り当て、リンク移動メソッドを設定する必要があります。

String yourText = getString(R.string.your_text);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
   textView.setText(Html.fromHtml(yourText, Html.FROM_HTML_MODE_COMPACT));
} else {
   textView.setText(Html.fromHtml(yourText));
}

try {
   subtext.setMovementMethod(LinkMovementMethod.getInstance());
} catch (Exception e) {
   //This code seems to crash in some Samsung devices.
   //You can handle this edge case base on your needs.
}

5

あなたが問題を抱えている理由は、それが「裸の」アドレスにのみマッチしようとするからです。「www.google.com」や「http://www.google.com」など」など。

Html.fromHtml()使用してテキストを実行すると、うまくいくはずです。プログラムで行う必要がありますが、機能します。


2
TextViewのリンクは、文字列の他のテキストとは異なる色であるため、リンクとして認識されていると思います。それらはクリックできないだけです:-(
リチャード

4

別の答えを追加する価値があるかどうかはわかりませんが、念のため...

私はこれをいくつかの場所で探し出さなければなりませんでしたが、ようやくこのバージョンのコードが機能するようになりました。

strings.xml:

<string name="name1">&lt;a href="http://www.google.com">link text1&lt;/a></string>
<string name="name2">&lt;a href="http://www.google.com">link text2&lt;/a></string>

myactivity.xml:

<TextView 
    android:id="@+id/textview1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

<TextView 
    android:id="@+id/textview2"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

myactivty.java(onCreate()内):

TextView tv1 = (TextView)findViewById(R.id.textview1);
TextView tv2 = (TextView)findViewById(R.id.textview2);

tv1.setText(Html.fromHtml(getResources().getString(R.string.name1)));
tv2.setText(Html.fromHtml(getResources().getString(R.string.name2)));
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv2.setMovementMethod(LinkMovementMethod.getInstance());

これにより、テキストlink text1link text2含む2つのクリック可能なハイパーリンクが作成され、ユーザーはgoogleにリダイレクトされます。


4

オートリンク電話が機能しません。以下は魅力のように働きました、

TextView tv = (TextView) findViewById(R.id.emergencynos);
String html2="<br><br>Fire - <b><a href=tel:997>997</a> </b></br></br>";        
tv.append(Html.fromHtml(html2));
tv.setMovementMethod(LinkMovementMethod.getInstance());

4

XMLベースのTextViewを使用する場合、要件に応じて次の2つのことを行う必要があります。

  1. 「this is my WebPage」などの文字列でリンクを特定します。xmlまたはコードで追加できます。

  2. TextViewを含むxmlに、次を追加します。


android:linksClickable="true"

android:autoLink="web"

4

文字列リソースにCDATAを追加します

Strings.xml

<string name="txtCredits"><![CDATA[<a href=\"http://www.google.com\">Google</a>]]></string>

3

オートリンクを使用してテキストに「自動下線」を付けましたが、それを管理する「onClick」を作成しました。(私はこの問題に自分で遭遇しました)

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:textSize="18dp"
            android:autoLink="all"
            android:text="@string/twitter"
            android:onClick="twitter"/>

public void twitter (View view)
    {
        try
        {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com/onaclovtech"));
            startActivity(browserIntent);

        }
        finally
        {
        }
    }

これらのリソースを管理するアプリ(IEブラウザー)にインテントを渡すため、権限は必要ありません。

これは私のために働いたものでした。幸運を。


クリック可能なリンクを作成するのではなく、TextView全体をクリック可能にするだけです...それは問題ではありません。
クロージエール

同意しますが、機能する回避策も同じです。最も人気のある回答が書かれてから明らかに5年経ちましたが、これはまだ問題であり、6か月前に同じ問題が発生しましたが、結局別の解決策になりました。
onaclov2000 2016年

2

getString(R.string.whatever)の代わりにgetText(R.string.whatever)を使用する必要があることを理解するのに非常に多くの時間を無駄にしただけです...

とにかく、これが私の仕事の仕方です。同じテキストビューに複数のハイパーリンクが含まれている。

    TextView termsTextView = (TextView) getActivity().findViewById(R.id.termsTextView);
    termsTextView.append("By registering your account, you agree to our ");
    termsTextView.append(getText(R.string.terms_of_service));
    termsTextView.append(", ");
    termsTextView.append(getText(R.string.fees));
    termsTextView.append(", and the ");
    termsTextView.append(getText(R.string.stripe_connected_account_agreement));

    termsTextView.setMovementMethod(LinkMovementMethod.getInstance());



            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/termsTextView"/>

文字列の例

    <string name="stripe_connected_account_agreement"><a href="https://stripe.com/connect/account-terms">Stripe Connected Account Agreement</a></string>

これは非常に簡単で使いやすいです。このため、動的に追加されたTextViewでカスタムテキストが機能する複数のリンクがあります。これには、可能な限り多くの賛成票が必要です。スパンされた文字列、カスタムのTextView、HtmlCompat.fromHtmlメソッドに頭を悩ませています。@ luca992、どうもありがとうございました。
Parth Patel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.