1. ホーム
  2. android

[解決済み] AlertDialogでクリック可能なハイパーリンクを文字列リソースから取得するにはどうすればよいですか?

2022-06-02 10:08:04

質問

私が達成しようとしていることは、メッセージテキストにクリック可能なハイパーリンクを表示することです。 AlertDialog . 一方 AlertDialog で定義された)ハイパーリンクには喜んで下線が引かれ、色が付けられます。 <a href="..."> に渡された文字列リソースで Builder.setMessage という文字列が渡されると、リンクはクリックできるようになりません。

私が現在使用しているコードは以下のようなものです。

new AlertDialog.Builder(MainActivity.this).setTitle(
        R.string.Title_About).setMessage(
        getResources().getText(R.string.about))
        .setPositiveButton(android.R.string.ok, null)
        .setIcon(R.drawable.icon).show();

を使うのは避けたい。 WebView を使うのは避けたい。

どのように解決するのですか?

ダイアログにテキストと URL を表示するだけなら、もっと簡単な方法で解決できるかもしれません。

public static class MyOtherAlertDialog {

 public static AlertDialog create(Context context) {
  final TextView message = new TextView(context);
  // i.e.: R.string.dialog_message =>
            // "Test this dialog following the link to dtmilano.blogspot.com"
  final SpannableString s = 
               new SpannableString(context.getText(R.string.dialog_message));
  Linkify.addLinks(s, Linkify.WEB_URLS);
  message.setText(s);
  message.setMovementMethod(LinkMovementMethod.getInstance());

  return new AlertDialog.Builder(context)
   .setTitle(R.string.dialog_title)
   .setCancelable(true)
   .setIcon(android.R.drawable.ic_dialog_info)
   .setPositiveButton(R.string.dialog_action_dismiss, null)
   .setView(message)
   .create();
 }
}

このように http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink