通常、ユーザーがアプリの1つを最初に使用するときに起動するように、ある種のAlertDialog
を設定し、アプリの使用方法を説明し、ダウンロードしたものの概要を説明します。また、通常、strings.xml
ファイル。
私がやりたいのは、文字列リソース内の単語の1つをWebページ上のハイパーリンクのようにクリック可能にすることです。基本的にAlertDialog
があり、文字列リソース内に強調表示されたWordまたは場合によっては押すことができる単なるWebアドレスがあります。それらをサイトに移動するボタンを追加するだけでよいと思いますが、文字列リソース内のWordをクリック可能なハイパーリンクにすることができるかどうかを知りたいだけです。
リソースでHTML形式のリンクを使用するだけです。
_<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>
_
次に、TextView
でsetMovementMethod(LinkMovementMethod.getInstance())
を使用して、リンクをクリック可能にします。
TextView
の_Android:autoLink
_属性もあり、これも機能するはずです。
私は何か面白いものを見つけました。誰かがこれを観察したかどうか教えてください。
以下を使用する場合、ハイパーリンクは機能しません
Android:autoLink="web"
しかしで動作します
TextView link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());
<string name="my_link">
<a href="http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource">
Click me!
</a>
</string>
ただし、次のリンクを使用すると、両方で機能します
Android:autoLink="web" (or)
TextView link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());
<string name="my_link">
<a href="http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource">
http://stackoverflow.com/questions/9204303/Android-is-it-possible-to-add-a-clickable-link-into-a-string-resource
</a>
</string>
Androidは、有効なリンクを含む文字列を自動的にクリック可能にしません。できることは、ダイアログにカスタムビューを追加し、WebViewを使用してアラートメッセージを表示することです。その場合、リソースにhtmlを保存でき、クリック可能になります。
View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null);
WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView);
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8");
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setView(alertDialogView);
alert_dialog_layout.xml
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent" Android:layout_height="wrap_content"
Android:orientation="vertical">
<WebView Android:id="@+id/dialogWebView" Android:layout_height="wrap_content"
Android:layout_width="wrap_content" />