main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/normal_dialog_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Normal Dialog" /> <Button android:id="@+id/wide_dialog_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Wide Dialog" /> </LinearLayout>ボタンを2つ用意しています。「Normal Dialog」は普通にダイアログを表示して、「Wide Dialog」は横幅を広げてダイアログを表示するボタンです。
dialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="THE QUICK BROWN FOX" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="JUMPS OVER LAZY DOG" /> </LinearLayout>ダイアログの内容は「THE QUICK BROWN FOX」「JUMPS OVER THE LAZY DOG」の2行です。
DialogTest2aActivity.java
package jp.co.triware.samples.DialogTest2a; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; public class DialogTest2aActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Button)findViewById(R.id.normal_dialog_btn)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openDialog(false); } }); ((Button)findViewById(R.id.wide_dialog_btn)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openDialog(true); } }); } private void openDialog(boolean bWide) { Dialog dlg = new Dialog(DialogTest2aActivity.this); dlg.setTitle("Quick Brown Fox"); dlg.setContentView(R.layout.dialog); dlg.show(); if (bWide == true) { Window win = dlg.getWindow(); WindowManager.LayoutParams lpCur = win.getAttributes(); WindowManager.LayoutParams lpNew = new WindowManager.LayoutParams(); lpNew.copyFrom(lpCur); lpNew.width = WindowManager.LayoutParams.FILL_PARENT; lpNew.height = WindowManager.LayoutParams.WRAP_CONTENT; win.setAttributes(lpNew); } } }ダイアログの表示自体は同じようなものですので関数にしました。横幅を広げる処理は38-44行めです。
35行めのdlg.show();でダイアログを表示し、38行めのdlg.getWindow();で表示中のウィンドウ情報(この場合はダイアログの情報)を取得します。
39-41行めで、ダイアログのレイアウト情報を取得して、42-44行めで新しく作ったパラメータをセットします。XMLで指定したパラメータが効かないので、動的に指定しています。
Androidプロジェクトの設定
ビルドターゲットや最小SDKバージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: DialogTest2a アプリケーション名: DialogTest2a パッケージ名: jp.co.triware.samples.DialogTest2a アクティビティーの作成: DialogTest2aActivity
実行結果
「Normal Dialog」をクリックすると・・・
ダイアログの横幅は、メッセージの長さ程度ですが、「Wide Dialog」の場合は・・・
横幅いっぱいのダイアログになりました。
0 件のコメント:
コメントを投稿