Webサービスから動的テキストを取得し、TextViewで同じテキストを表示しています。 TextViewには<a href="http://hello.com">hello</a>
。次のコードを使用してテキストを設定しました。
textView.setText(Html.fromHtml(sampletext));
また、Android:autoLink="web"
は、TextView
を含む対応するxmlにあります。現在、リンクは青色と下線で適切に表示されていますが、リンクが死んでいることがわかりました。クリックしようとしても何も起こりません。リンクをアクティブにするにはどうすればよいですか?
すべてのソリューションを再検討した後、いくつかの説明を含む要約:
Android:autoLink="web"
android:linksClickableが設定されていない場合でも、URLを見つけてリンクを作成します。リンクはデフォルトでクリック可能です。 URLを単独で保持する必要はありません。テキストの途中であっても検出されてクリック可能になります。
<TextView
Android:text="My web site: www.stackoverflow.com"
Android:id="@+id/TextView1"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:autoLink="web">
</TextView>
コードを使用してリンクを設定するには、同じ原理で、レイアウトにパターンやAndroid:autoLinkは必要ありません。Linkifyを使用してリンクが自動的に検出されます。
final TextView myClickableUrl = (TextView) findViewById(R.id.myClickableUrlTextView);
myClickableUrl.setText("Click my web site: www.stackoverflow.com");
Linkify.addLinks(myClickableUrl, Linkify.WEB_URLS);
これは私のために働く:
<TextView
Android:text="www.hello.com"
Android:id="@+id/TextView01"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:autoLink="web">
</TextView>
いつでも節約するには、真の解決策は
<TextView
Android:text="www.hello.com"
Android:id="@+id/TextView01"
Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:autoLink="web"
Android:linksClickable="true">
</TextView>
そして私はそれを使用し、それは完璧に動作します
2つのケースがあります。
"click on http://www.hello.com"
テキストでリンクが自動的に検出されるように、xmlでautoLink属性を設定する必要があります。
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:autoLink="web"
Android:text="click on http://www.hello.com"/>
click on <a href="http://hello.com">hello</a>
次に、コードでそれを実行し、テキストがhtmlであることを伝え、クリックのリンク移動方法を指定する必要があります。
String text = "click on <a href=\"http://hello.com\">hello</a>";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
このアプローチをチェックしてください:
String text = "Visit stackoverflow.com";
TextView label = new TextView(this);
label.setText(text);
Pattern pattern = Pattern.compile("stackoverflow.com");
Linkify.addLinks(label, pattern, "http://");
私はそれを見つけたいくつかのアイデアを与えました
TextView tv = ( TextView ) findViewById( R.id.link );
WebView wv = ( WebView ) findViewById( R.id.webView );
URLSpan[] urlSpans = tv.getUrls();
for ( URLSpan urlSpan : urlSpans )
{
wv.loadUrl( urlSpan.getURL() );
}
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Hello, Android</string>
<string name="link">'<a href="http://www.google.com" rel="nofollow">Google</a>'</string>
</resources>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
<TextView
Android:id="@+id/link"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:autoLink="all"
Android:linksClickable="true"
Android:text="@string/link" />
<WebView
Android:id="@+id/webView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1.0" />
</LinearLayout>
XMLで、Android:linksClickable="true"
をTextViewに追加する必要があります。
これを試してください https://saket.me/better-url-handler-textview-Android/
それは非常に良い解決策であり、簡単です
Answer は正しいですが、完全ではありません。autoLinkやlinksClickableのような他の回答のプロパティが機能していなかったためです。また、文字列リソースからhtmlで文字列を渡すときも機能しませんでした。そのため、xmlをクリーンアップし、その答えとまったく同じように文字列を直接渡す必要があります。
String text = "click on <a href=\"http://hello.com\">hello</a>";
TextView textView = view.findViewById(R.id.textView);
textView.setText(Html.fromHtml(text));
textView.setMovementMethod(LinkMovementMethod.getInstance());
LinkMovementMethodなしでは試しませんでしたが、ようやく機能するようになったので大丈夫です。他の回答は私にとってはうまくいかなかったか、リンクとしてクリック可能なテキストではなく、表示可能なURLテキストに対するものでした。
これらのコード行をtextView
ファイルのxml
に追加すると、問題なく動作します。
Android:autoLink="web" Android:textColorLink="@Android:color/holo_orange_dark" Android:linksClickable="true"
または、textview
に独自のリンクが必要な場合は、Javaファイルにこれらのコード行を追加します
final SpannableString s = new SpannableString("https://play.google.com/store/apps/details?id=cn.wps.moffice_eng");
Linkify.addLinks(s, Linkify.ALL);
関数によってTextView
にこの 's'文字列を設定します
Textview.setText(s);
この行を追加することを忘れないでください
((TextView)findViewById(Android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
idはtextview
idになります
楽しい ...
Textviewにstrings.xmlの文字列を表示する場合、Webリンクを含む文字列にはWord "a href ="を含めないでください。これらの単語がstrings.xmlファイルから削除された場合、リンクは機能します。