TextView
にリンクを配置する必要があります。タグ<a href="link">Text for link</a>
およびその他のテキストを含む文字列があります。問題は、プロジェクトを実行するとテキストは表示されるが、クリックできないことです。 <b>
タグも試してみて、それが機能するかどうかを確認しましたが、機能しないようです。
Linkify
を使用せずにこれを機能させるにはどうすればよいですか?
すべてのご協力ありがとうございます。
Androidサンプルでいくつかの例を見つけた後、私はこの仕事をなんとかすることができました。
コードは次のとおりです。
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());
これが他の人を助けることを願っています...
Htmlからリンクを機能させるのはちょっと難しいです:
Xml _Android:text="@string/…
_またはsetText()
を介してテキストを適用します(他の回答を参照)
textView.setMovementMethod(LinkMovementMethod.getInstance())
を使用して、リンクをクリック可能にします(他の回答を参照)
[〜#〜] not [〜#〜] XMLリソースに_Android:autoLink="web"
_を追加します(セクションTextView
)、そうでない場合、Aタグは正しくレンダリングされず、クリックできませんもはや。
備考1:OnClickListener
が役立つのは、TextView
にリンクが1つしか含まれておらず、ユーザーがリンクを脇でクリックした場合でも、TextView
内でナビゲーションをトリガーする場合。
備考2:
_Android:linksClickable="true"
_はまだ機能しません(Android 3.2)現在、代わりにp。2を使用してください。
Linkifyは、リンクを作成するために使用する必要があるクラスです。ところで、Linkifyを使用しない理由は何ですか?
Webサイトにアクセスしたり、スキーマに基づいて電話番号を呼び出すなどのアクションのために、テキストビュー内のすべてのテキストをリンクできます。 Androidはそれを行う最も簡単な方法を提供します。以下のコードを考慮してください。
TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);
カスタムリンクを作成するために、同じLinkifyクラスがさまざまなオプションを提供します。 Googleは これに関するブログ投稿 を公開しています。
私はそれを理解できませんでしたが、最終的には次のようなことをしたときに機能し始めました:
tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html)));
Linkify.addLinks(tvTermsOfUse, Linkify.ALL);
tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance());
テキストビューは次のようになります。
<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" />
および文字列res:
<string name="tv_terms_of_use_html">
<![CDATA[This is link to <a href="http://google.com/">Google</a>.]]>
</string>
重要な部分:Linkify.addLinks
を行う必要がありますbeforetvTermsOfUse.setMovementMethod
、それ以外の場合は機能しません。
XMLでは他の設定は必要ありません。
自分で理解するのに約1時間かかりました。
編集:
@rfellonsコメントによると
ありがとう。また、私のために働く...しかしだけで
<uses-permission Android:name="Android.permission.INTERNET"/>
manifest.xmlで。 – rfellons 9月7日13時31分
必ず確認してください。
つかいます
Android:linksClickable="true"
Android:autoLink="web"
何らかの理由で回答に返信できません。 _textView.setText
_を省略して文字列リソースに配置し、_Android:text
_を使用して設定できることを伝えたいだけです。 textView.setMovementMethod(LinkMovementMethod.getInstance());
;を保持するだけです。残念ながら_Android:linksClickable="true"
_自体は機能しません。
解決策:Linkify.addLinks(chatText,Linkify.ALL);
これはかなり正確に動作します:(textviewプロパティで、xmlファイル内)
Android:autolink="web"
リンクを動的に追加するには(サーバーから取得)、これは機能します。
textView.setText(Html.fromHtml(
"<a href=" + response.getLink()
+ ">" + context.getString(R.string.link_from_server) + "</a> "));
xMLでこれを追加します。
Android:linksClickable="true"
Strings.xmlにこれがある場合:
<string name="link_from_server">Dynamic Link</string>
これにより、テキストビューに「ダイナミックリンク」が追加され、これにタッチすると、サーバーから提供されたリンクに移動します。