○ソースコード
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); final View viewSettingDialog = inflater.inflate(R.layout.setting_dialog, (ViewGroup)findViewById(R.id.layout_root)); ((CheckBox)viewSettingDialog.findViewById(R.id.checkBoxVibrator)).setChecked(true); ((SeekBar)viewSettingDialog.findViewById(R.id.seekBarVolume)).setProgress(50); // AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(viewSettingDialog); builder.setPositiveButton("OK", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { // OKボタンクリック処理 boolean valVib = ((CheckBox)viewSettingDialog.findViewById(R.id.checkBoxVibrator)).isChecked(); int valVol = ((SeekBar)viewSettingDialog.findViewById(R.id.seekBarVolume)).getProgress(); } }); builder.setNegativeButton("Cancel", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Cancel ボタンクリック処理 } }); builder.create().show();
○setting_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/option_volume" /> <SeekBar android:id="@+id/seekBarVolume" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:padding="16dp" android:progress="50" /> <CheckBox android:id="@+id/checkBoxVibrator" android:layout_width="308dp" android:layout_height="wrap_content" android:text="@string/option_vibrator" /> </LinearLayout>
画面はeclipseでデザインできるので便利です。
その際に「LinearLayout」にID「layout_root」を付けておき、
その「layout_root」を「R.id.layout_root」と
もう一つ、「R.layout.setting_dialog」でinflateでViewで読み込んで表示します。
eclipseでデザインできるのが便利ですねえ。