ページ

2013/05/06

[Android]2回の変身を遂げて更に良くなったAlertDialogFragment

[Android]DialogFragmentの汎用性を高めたAlertDialogFragment | DevAchieve
書いたら@noxi515先生が数時間でもっと良い物を書いて公開してくれました。
Androidあれこれ: AlertDialogFragmentつくった
DialogFragment like AlertDialog.Builder | noxi515 / AlertDialogFragment.java

変身後のパワーアップ感ヤバイです。
Android やりながら適当に Java を習得してきた僕が書いたコードがゴミのようだ。
最初 Generic の部分が分からなくてちゃんと Java を勉強しなきゃなぁと思いました。

とりあえず以下の変更/追加のためにフォークしました。
wada811 / AlertDialogFragment.java
以下、変更点。
  • コメント追加。
  • AlertDialog.Builder#setCustomTitle を使えるように変更。
  • AlertDialog#setCanceledOnTouchOutside を呼べるように変更。
  • boolean を使用しない意図がわからなかったので boolean に変更。
  • 呼び出し順に並べ替え。
  • AlertDialogFragment.Builder#setTitleView(int) を追加。
  • AlertDialogFragment.Builder#setView(int) を追加。
  • その他微修正。

Android2.3 で見るダイアログのタイトルってアイコンとタイトル文字の vertical-align が合ってないから
それを簡単に修正したレイアウトを指定したかったので AlertDialog.Builder#setCustomTitle を使えるように。
あと、レイアウトを指定するだけでいいカジュアルなカスタマイズ方法として
AlertDialogFragment.Builder#setTitleView(int) と AlertDialogFragment.Builder#setView(int) も追加。
Honeycomb 以降でダイアログの外部タッチで閉じる、がデフォルトになるらしいので
AlertDialog#setCanceledOnTouchOutside を設定できるようにした。
Y.A.M の 雑記帳: Android Honeycomb 以降ではダイアログの外部タッチで閉じる、がデフォルトになっている

boolean を使用しない理由ってなんでしょう?わたし、気になります!
未指定はデフォルト false みたいな動きが多かったので勝手に変数に初期値 false を持たせました。

Android2.3 で見るダイアログだけか知らないけど AlertDialog.Builder#setView すると
上下に謎のスペースが出来るので内部で AlertDialog#setView でパディング消しています。
他のバージョンだとこれはどうなんでしょう?わたし、気になります!

ところでこのソースコードのライセンスはどうなるの?わたし、気になります!
Gist にライセンス指定があればいいのではないかとか思ったり。

@noxi515先生の次回作にご期待ください!