アラートダイアログ(AlertDialog)の表示位置を変えるには?
表示位置を変えたい!
アラートダイアログは初期状態だと画面中央に表示されます。まあ別にそれでもいいんですがたとえばダイアログ中にEditTextがあったりするとソフトウェアキーボードが画面下半分に表示される関係で文字入力する際にダイアログが上にずれるんです!別にずれてもいいじゃーんというならそれまでですが最初から画面上部に表示できたらずれなくていいなと思いましていろいろ…
いろいろググって試してみた結果以下のコードで表示位置をずらせることを確認!(とっくに知ってるって?)
アラートダイアログを表示するshowDialogメソッド
private void showDialog(){ AlertDialog.Builder builder; AlertDialog alertDialog; LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout=inflater.inflate(R.layout.dialoglayout, (ViewGroup)findViewById(R.id.layoutroot)); builder=new AlertDialog.Builder(this); builder.setView(layout); alertDialog=builder.create(); //ココからがポイント WindowManager.LayoutParams wmlp=alertDialog.getWindow().getAttributes(); wmlp.gravity=Gravity.TOP; //画面上部に表示 //wmlp.gravity=Gravity.BOTTOM; //画面下部に表示 //wmlp.y=50; //中心から下方向に50pxずらす alertDialog.getWindow().setAttributes(wmlp); alertDialog.show(); }
show()メソッドで表示する前にWindowManager.LayoutParamsを設定し直す事により表示位置を制御出来るようですね
結果画像一覧(一応Twitterクライアント想定。画像とかアイコンとかは適当w)
普通 | 上部表示 | 下部表示 | 下に50pxずらす |
おわりに
画面上部に表示することは出来ましたがどうも変な余白があるのが気になる!一番上に表示されて欲しいな…