Android:ダイアログに出すメッセージのフォントを小さくかつ、スクロール可に(^^;

 WordPressを使ってのホームページの作成が一段落したので、8面式単語カード「四方八面 for Android」の開発を再開。

 「四方八面」の特長の一つが、データ毎に「表紙」を付けられ、データ内容の説明や、使用上の注意等を最初に表示できる事なのだが、Ver. 1.00では「表紙」で使用されるフォントサイズが大きくて、全部読むにはスクロールさせなければならないケースが多いという問題があった。(^^;
 AlertDialog.Builder を使ってメッセージを表示する場合、setMessage() を使えば非常に簡単で、メッセージが長ければスクロールも自動で付けてくれて便利なのだが、フォントサイズを変更できない。(Ver. 1.00 では、これで済ませていた。(^^;)

 取り敢えず、フォントサイズを設定できるようにするには、setMessage() をやめて、代わりに setView を使い、新たに用意した TextView をセットすれば良い、という所までは簡単に分かった。
 ↓こんな感じ。(表示したい内容が msg に入っている)

  TextView tV = new TextView(context);
  tV.setTextColor(Color.WHITE);
  tV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f);←フォントのサイズ
  tV.setText(msg);

  aD = new AlertDialog.Builder(context)
  .setTitle(context.getString(R.string.about))
  .setIcon(R.drawable.icon)
//.setMessage(msg) ←これをやめる
  .setView(tV)   ←代わりにこれ
  .setPositiveButton("OK", null)
  .create();
  aD.show();

 ただ、これだと表示し切れなかった場合にスクロールができない。(^^;
 ググった結果、TextViewをスクロールさせるには、ScrollViewを用意して、その中にTextViewを入れる必要があると分かったのだが、その方法として、「.xml を新たに書く」方法ばかりがヒットする。
 スクロールさえできれば、細かい設定なんて要らないので、.xml を書いて、findViewById で Id を取得して……等という面倒な事は避けたかったのだが。ググっても、なかなかそれらしいサンプルが見つからず。(^^;

 で、ふと、.xml を使わずに ScrollView はコード上で new して、ScrollView に、「スクロールして欲しいのは、これですよ」って、コードで教えてあげる方法があるんではないか? と考えて、

  ScrollView sV = new ScrollView(context);
  sV.

 って Eclipse に書いたら、「addView() が使えるよ」って補完機能が教えてくれた。(^^;

 sV.addView(tV);

 として、.setView(tV) の代わりに .setView(sV)。そんだけ。(^^;

 こんな簡単な事で悩んでしまったのが恥ずかしい……(^^;

--追記--
 スクロール・バーが表示される時に、行末の文字と重なってしまう場合がある。読めなくはないが、ちょっと嫌。(^^;

  sV.setPadding(10, 0, 10, 0); ←2個目の10が右側(行末)のpadding幅
  sV.setScrollBarStyle(ScrollView.SCROLLBARS_OUTSIDE_OVERLAY);

 で解決。(^^)
 ちなみに、セットできるスタイルは4通り。

 SCROLLBARS_INSIDE_OVERLAY
 SCROLLBARS_INSIDE_INSET
 SCROLLBARS_OUTSIDE_OVERLAY
 SCROLLBARS_OUTSIDE_INSET

 OUTSIDE_OVERLAY だと、Padding の上にバーを重ねる形になるので、バーが出ても出なくても、Paddingの幅も、メッセージが表示される領域の幅も変わらない。(という理解で良いかな?)