一個對話框就是一個小窗體,提示用戶作出決定或輸入額外的信息。對話框不填滿屏幕,一般用於模態事件,要求用戶採起某些行動,程序才能繼續往下執行。下面用在程序里程序具體說明Dialog的使用java
activity_main.xml中的內容:android
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:onClick="showDialog" android:text="普通對話框" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button1" android:onClick="showDialog" android:text="有按鈕的對話框" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button2" android:onClick="showDialog" android:text="列表對話框" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button3" android:onClick="showDialog" android:text="單選對話框" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button4" android:onClick="showDialog" android:text="多選對話框" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button5" android:onClick="showDialog" android:text="自定義對話框" /> <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button6" android:onClick="showDialog" android:text="TimePickDialog對話框" /> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button7" android:onClick="showDialog" android:text="DatePickerDialog對話框" /> </RelativeLayout>
新建一個dialog_button_item.xml佈局文件:數組
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <Button android:id="@+id/button1" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button4" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
MainActivity.java中的內容:
app
package com.zzh.day11_dialog; import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.DatePicker; import android.widget.TimePicker; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * @param view */ public void showDialog(View view) { switch (view.getId()) { case R.id.button1://普通對話框 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("普通對話框");//設置對話框的標題 builder.setIcon(R.drawable.ic_launcher);//設置對話框的小圖標 builder.setMessage("信息信息信息信息信息信息信息");//設置對話框要顯示的信息 AlertDialog ad = builder.create();//建立AlertDialog的對象 ad.show();//設置對話框顯示 break; case R.id.button2://有按鈕的對話框 /** * setPositiveButton,setNegativeButton,setNeutralButton中參數的意義 * 參數一:按鈕上要顯示的文字 * 參數二:按鈕的點擊事件 * */ new AlertDialog.Builder(this).setTitle("按鈕").setIcon(R.drawable.ic_launcher)// .setMessage("有按鈕的對話框")// .setPositiveButton("OK", new OnClickListener()//對OK按鈕的事件進行監聽,處理。後邊的setNegativeButton,setNeutralButton,也是同樣的。 { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "你點擊了OK按鈕", Toast.LENGTH_SHORT).show(); } })// .setNegativeButton("Cencel", null)// .setNeutralButton("SO SO", null).show(); break; case R.id.button3://對話框的內容是一個列表 new AlertDialog.Builder(this).setTitle("列表").setIcon(R.drawable.ic_launcher)// .setItems(new String[]{"條目一","條目二","條目三","條目四"}, new OnClickListener() { /* * DialogInterface dialog:被點擊的對象 * int which:被點擊的位置 */ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, which+"----", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button4://對話框中的內容是一個單選列表 /** * setSingleChoiceItems中的參數意義 * 參數一:單選框中有哪些條目,是一個數組 * 參數二:默認被選中的單選框 * 參數三:點擊事件 * 重載的方法: * setSingleChoiceItems(int itemsId, int checkedItem, DialogInterface.OnClickListener listener) * 參數一:是把數組定義在xml文件中,在Java文件中使用R.array....引用。 * */ new AlertDialog.Builder(this).setTitle("單選").setIcon(R.drawable.ic_launcher)// .setSingleChoiceItems(new String[]{"red","blue","green"}, -1, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "選擇了第 "+(which+1)+" 個顏色", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button5://多選對話框 /** * setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) * 參數一:多選框中的條目; * 參數二:是否被選中,若是是null,則都沒有選中 * 參數三:與單選框的事件不一樣,DialogInterface.OnMultiChoiceClickListener * */ new AlertDialog.Builder(this).setTitle("多選").setIcon(R.drawable.ic_launcher)// .setMultiChoiceItems(new String[]{"red","blue","green"}, null, new OnMultiChoiceClickListener() { /* onClick(DialogInterface dialog, int which, boolean isChecked) * 參數一:被點擊的對象; * 參數二:被點擊的位置,位置是從0開始的 * 參數三:被點擊的對象是否選中,若是選中則是true,若是取消選中,則是false */ @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(MainActivity.this, "選擇了第 "+(which+1)+" 個顏色", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button6://自定義對話框 View view_button = getLayoutInflater().inflate(R.layout.dialog_button_item, null);//轉換模板,將定義好的按鈕小xml文件轉換成View對象 final AlertDialog dialog = new AlertDialog.Builder(this).setTitle("自定義").setIcon(R.drawable.ic_launcher).setView(view_button).create();// dialog.show(); Button btn = (Button) view_button.findViewById(R.id.button1);//給按鈕設置點擊事件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "lalalla", Toast.LENGTH_SHORT).show(); dialog.dismiss();//事件執行完成之後,對話框消失 } }); break; case R.id.button7://時間選擇對話框,時分 /** * TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) * 參數一:上下文 * 參數二:TimePickerDialog的點擊事件, * 參數三:小時 * 參數四:分鐘 * 參數五:是否使用24小時制,是true * */ TimePickerDialog tpd = new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener()//此監聽事件的接口是在TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Toast.makeText(MainActivity.this, " "+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show(); } },1,1,true ); tpd.show(); break; case R.id.button8://日期選擇對話框,年月日 /** * DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) * 參數一:上下文 * 參數二:DatePickerDialog的點擊事件, * 參數三:設置年 * 參數四:設置月份 * 參數五:設置日 */ DatePickerDialog dpd = new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Toast.makeText(MainActivity.this, " "+year+" : "+(monthOfYear+1)+" : "+dayOfMonth, Toast.LENGTH_SHORT).show(); } }, Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH)); dpd.show(); break; } } }
顯示的效果示例:ide
有興趣的,能夠使用程序慢慢研究。佈局