您好,登錄后才能下訂單哦!
一個(gè)對(duì)話(huà)框就是一個(gè)小窗體,提示用戶(hù)做出決定或輸入額外的信息。對(duì)話(huà)框不填滿(mǎn)屏幕,通常用于模態(tài)事件,要求用戶(hù)采取某些行動(dòng),程序才能繼續(xù)往下執(zhí)行。下面用在程序里程序具體說(shuō)明Dialog的使用
activity_main.xml中的內(nèi)容:
<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="普通對(duì)話(huà)框" /> <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="有按鈕的對(duì)話(huà)框" /> <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="列表對(duì)話(huà)框" /> <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="單選對(duì)話(huà)框" /> <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="多選對(duì)話(huà)框" /> <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="自定義對(duì)話(huà)框" /> <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對(duì)話(huà)框" /> <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對(duì)話(huà)框" /> </RelativeLayout>
新建一個(gè)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中的內(nèi)容:
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://普通對(duì)話(huà)框 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("普通對(duì)話(huà)框");//設(shè)置對(duì)話(huà)框的標(biāo)題 builder.setIcon(R.drawable.ic_launcher);//設(shè)置對(duì)話(huà)框的小圖標(biāo) builder.setMessage("信息信息信息信息信息信息信息");//設(shè)置對(duì)話(huà)框要顯示的信息 AlertDialog ad = builder.create();//創(chuàng)建AlertDialog的對(duì)象 ad.show();//設(shè)置對(duì)話(huà)框顯示 break; case R.id.button2://有按鈕的對(duì)話(huà)框 /** * setPositiveButton,setNegativeButton,setNeutralButton中參數(shù)的意義 * 參數(shù)一:按鈕上要顯示的文字 * 參數(shù)二:按鈕的點(diǎn)擊事件 * */ new AlertDialog.Builder(this).setTitle("按鈕").setIcon(R.drawable.ic_launcher)// .setMessage("有按鈕的對(duì)話(huà)框")// .setPositiveButton("OK", new OnClickListener()//對(duì)OK按鈕的事件進(jìn)行監(jiān)聽(tīng),處理。后邊的setNegativeButton,setNeutralButton,也是一樣的。 { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "你點(diǎn)擊了OK按鈕", Toast.LENGTH_SHORT).show(); } })// .setNegativeButton("Cencel", null)// .setNeutralButton("SO SO", null).show(); break; case R.id.button3://對(duì)話(huà)框的內(nèi)容是一個(gè)列表 new AlertDialog.Builder(this).setTitle("列表").setIcon(R.drawable.ic_launcher)// .setItems(new String[]{"條目一","條目二","條目三","條目四"}, new OnClickListener() { /* * DialogInterface dialog:被點(diǎn)擊的對(duì)象 * int which:被點(diǎn)擊的位置 */ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, which+"----", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button4://對(duì)話(huà)框中的內(nèi)容是一個(gè)單選列表 /** * setSingleChoiceItems中的參數(shù)意義 * 參數(shù)一:?jiǎn)芜x框中有哪些條目,是一個(gè)數(shù)組 * 參數(shù)二:默認(rèn)被選中的單選框 * 參數(shù)三:點(diǎn)擊事件 * 重載的方法: * setSingleChoiceItems(int itemsId, int checkedItem, DialogInterface.OnClickListener listener) * 參數(shù)一:是把數(shù)組定義在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)+" 個(gè)顏色", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button5://多選對(duì)話(huà)框 /** * setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) * 參數(shù)一:多選框中的條目; * 參數(shù)二:是否被選中,如果是null,則都沒(méi)有選中 * 參數(shù)三:與單選框的事件不同,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) * 參數(shù)一:被點(diǎn)擊的對(duì)象; * 參數(shù)二:被點(diǎn)擊的位置,位置是從0開(kāi)始的 * 參數(shù)三:被點(diǎn)擊的對(duì)象是否選中,如果選中則是true,如果取消選中,則是false */ @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(MainActivity.this, "選擇了第 "+(which+1)+" 個(gè)顏色", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.button6://自定義對(duì)話(huà)框 View view_button = getLayoutInflater().inflate(R.layout.dialog_button_item, null);//轉(zhuǎn)換模板,將定義好的按鈕小xml文件轉(zhuǎn)換成View對(duì)象 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);//給按鈕設(shè)置點(diǎn)擊事件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "lalalla", Toast.LENGTH_SHORT).show(); dialog.dismiss();//事件執(zhí)行完成以后,對(duì)話(huà)框消失 } }); break; case R.id.button7://時(shí)間選擇對(duì)話(huà)框,時(shí)分 /** * TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) * 參數(shù)一:上下文 * 參數(shù)二:TimePickerDialog的點(diǎn)擊事件, * 參數(shù)三:小時(shí) * 參數(shù)四:分鐘 * 參數(shù)五:是否使用24小時(shí)制,是true * */ TimePickerDialog tpd = new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener()//此監(jiān)聽(tīng)事件的接口是在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://日期選擇對(duì)話(huà)框,年月日 /** * DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) * 參數(shù)一:上下文 * 參數(shù)二:DatePickerDialog的點(diǎn)擊事件, * 參數(shù)三:設(shè)置年 * 參數(shù)四:設(shè)置月份 * 參數(shù)五:設(shè)置日 */ 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; } } }
顯示的效果示例:
有興趣的,可以使用程序慢慢研究。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。