2011-01-25 5 views
48

TextViewにリンクを設定する必要があります。<a href="link">Text for link</a>というタグを含む文字列があります。 問題は、プロジェクトを実行するとテキストが表示されますが、クリックできないことです。私は<b>タグでもうまくいっているかどうかを試してみましたが、うまくいかないようです。TextViewでのリンク

Linkifyを使用せずにこの機能を動作させるにはどうすればよいですか?

+0

あなたの質問はあまり明確ではありません。また、なぜあなたはlinkifyを使いたくないのですか? – Qberticus

+0

あなたはあなたのアプリにtextviewをクリックすると何をすべきかを伝える必要があります(クリックイベントで - >リンクを開きます) –

+0

いいえ、私はlinkifyで作成したくありません – Cata

答えて

112

ありがとうございました。

私はアンドロイドサンプルでいくつかの例を見つけた後、私はこの仕事をすることができました。ここ

はコードです:

textView.setText(Html.fromHtml(
      "<b>text3:</b> Text with a " + 
      "<a href=\"http://www.google.com\">link</a> " + 
      "created in the Java source code using HTML.")); 
textView.setMovementMethod(LinkMovementMethod.getInstance()); 

・ホープこのヘルプ他人を...

+1

このソリューションは、電話番号と電子メールアドレスのリンクをすべて無視します。私はまだ同じ 'TextView'であらゆる種類のリンク(ウェブ、電話、電子メール、...)を扱う解決策を見つけるべきではありません。 – dbm

+0

私はjsonレスポンスdata.thatを含むテキストビューを持っています。レスポンスには説明とメールのIDと電話番号が含まれています。 – Harsha

+0

私はこれをしましたが、ユーザが追跡目的でクリックしたことをどのように知っていますか? – JPM

28

リンクを作成するために使用する必要があるクラスです。ところで、Linkifyを使用しない理由は何ですか?

ウェブサイトの訪問やスキーマに基づく電話番号の呼び出しなど、テキストビューのすべてのテキストをリンクすることができます。 Androidは最も簡単な方法です。以下のコードを考えてみましょう。

TextView noteView = (TextView) findViewById(R.id.noteview); 
noteView.setText(someContent); 
Linkify.addLinks(noteView, Linkify.ALL); 

カスタムリンクを作成する場合、同じLinkifyクラスにはさまざまなオプションがあります。 Googleはa blogpost on thisを公開しています。

+3

それはうまくいきません。テキスト – Cata

+0

助けてくれてありがとう、私に下線を取り除くにはどうすればいいですか? – Jan

+0

これは 'http://blah.com'のようなリンクでは機能しません。 – EpicPandaForce

3

私はいくつかの理由のためにあなたの答えに返信することはできません。私はtextView.setTextを省略して文字列リソースに入れて、android:textを使用して設定すると言っています。あなたはちょうどtextView.setMovementMethod(LinkMovementMethod.getInstance());を保つ必要があります。残念ながらandroid:linksClickable="true"は単独で動作しません。 HTMLから作業

40

取得リンクは、トリッキーなの一種である:

  1. がXML android:text="@string/…経由でテキストを適用するかを経由してsetText()(他の回答を参照してください)

  2. 使用textView.setMovementMethod(LinkMovementMethod.getInstance())クリック可能なリンクを作るために(他の回答を参照してください)

  3. Do android:autoLink="web"をXMLリソースに追加します(セクションTextView)、それ以外の場合、Aタグは正しく表示されず、もうクリックできません。

備考1:
あなたTextViewは1つのリンクのみが含まれており、ユーザーはさておき、あなたのリンクをクリックした場合でも、ナビゲーションをトリガしたいのですが、TextView内ならばOnClickListenerは、参考にすることができます。

備考2:
android:linksClickable="true"まだ動作しません(Android 3.2以降)。  2の代わりに

+1

これはONEです。ありがとう! – iTurki

+0

これも私を助けて!ありがとう。 – prcaen

+2

TextView xmlのリソースからリンク文字列を追加すると機能しません。これは、 'setText(Html.fromHtml(getResources()。getString(R.string.STRING_NAME)))'のためだけです。 –

19

使用

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

これはそこでもっとも簡単なメソッドであり、正常に機能しました。 – marson

20

私はそれを把握することができませんでしたが、最終的にはそれは私のような何かをした時に仕事を始め:

<TextView 
    android:id="@+id/tv_terms_of_use" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:textAlignment="gravity" 
    android:gravity="center" 
    android:textColor="@android:color/white" 
    android:textSize="15sp" /> 

tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html))); 
Linkify.addLinks(tvTermsOfUse, Linkify.ALL); 
tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance()); 

テキストビューは次のようになります

と文字列res:

<string name="tv_terms_of_use_html"> 
    <![CDATA[This is link to <a href="http://google.com/">Google</a>.]]> 
</string> 

重要な部分: Linkify.addLinksは、それ以外の場合は動作しません、tvTermsOfUse.setMovementMethodを行う必要があります。

XMLには他の設定は必要ありません。

私はそれを理解するのに1時間ほどかかりました。誰かを助けてくれることを願っています。

EDIT:

@rfellonsによると

感謝のコメント。私にとっても...しかし、

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

Manifest.xmlでのみです。 - rfellons Sep 7 at 13:31

も確認してください。

+2

Absoluty Right!それを書き留めていただきありがとうございます! 人員!答えはここにある!!!! –

+0

便利な答えは、私をたくさん助けて、thnks! – validcat

+0

これは完璧に動作しますが、CDATAの精度はありません – DoubleYo

0

これはかなりcorrectyを動作します(TextViewのプロパティでは、XMLファイル内の)

android:autolink="web" 
1

ソリューション:Linkify.addLinks(chatText、Linkify.ALL)。

0

この作品、動的に(サーバからフェッチ)のリンクを追加するには:

textView.setText(Html.fromHtml(
       "<a href=" + response.getLink() 
         + ">" + context.getString(R.string.link_from_server) + "</a> ")); 

とXMLでこの追加:

:あなたのstrings.xmlがこれを持っている場合

android:linksClickable="true" 

<string name="link_from_server">Dynamic Link</string> 

テキストビューに「ダイナミックリンク」が追加され、これをタッチすると、サーバーから提供されたリンクが表示されます。

関連する問題