为了创建AlertDialog,需要使用Builder类,创建AlertDialog.Builder类的对象实例,再通过show()方法显示对话框。
在编程的过程中发现SetMessage()方法和setSingleChoiceItems()等方法是互斥的,这个需要注意。
废话不多说,下面列出了8种AlertDialog对话框:
<LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/btn_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="不带按钮的Dialog" /> <Button android:id="@+id/btn_2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带两个按钮的Dialog" /> <Button android:id="@+id/btn_3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带三个按钮的Dialog" /> <Button android:id="@+id/btn_4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带简单列表的Dialog" /> <Button android:id="@+id/btn_5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带单选列表的Dialog" /> <Button android:id="@+id/btn_6" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带多选列表的Dialog" /> <Button android:id="@+id/btn_7" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带输入框的Dialog" /> <Button android:id="@+id/btn_8" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="带自定义布局的Dialog" /> </LinearLayout>
package com.example.androiddialog; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements android.view.View.OnClickListener { private String[] team = { "一番队", "二番队", "三番队", "四番队", "五番队", "六番队", "七番队", "八番队", "九番队", "十番队" }; private boolean[] choice = { true, false, true, false, false, false, true, false, false, false, }; private Button btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initResource(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_1: showDialog1(); break; case R.id.btn_2: showDialog2(); break; case R.id.btn_3: showDialog3(); break; case R.id.btn_4: showDialog4(); break; case R.id.btn_5: showDialog5(); break; case R.id.btn_6: showDialog6(); break; case R.id.btn_7: showDialog7(); break; case R.id.btn_8: showDialog8(); break; default: break; } } /** * 初始化控件资源 */ public void initResource() { btn_1 = (Button) findViewById(R.id.btn_1); btn_2 = (Button) findViewById(R.id.btn_2); btn_3 = (Button) findViewById(R.id.btn_3); btn_4 = (Button) findViewById(R.id.btn_4); btn_5 = (Button) findViewById(R.id.btn_5); btn_6 = (Button) findViewById(R.id.btn_6); btn_7 = (Button) findViewById(R.id.btn_7); btn_8 = (Button) findViewById(R.id.btn_8); btn_1.setOnClickListener(this); btn_2.setOnClickListener(this); btn_3.setOnClickListener(this); btn_4.setOnClickListener(this); btn_5.setOnClickListener(this); btn_6.setOnClickListener(this); btn_7.setOnClickListener(this); btn_8.setOnClickListener(this); } /** * 什么都没有,只有一句文字的Dialog */ public void showDialog1() { new AlertDialog.Builder(this).setTitle("这是一个没有按钮的AlertDialog~") .create().show(); } /** * 带两个按钮的Dialog */ public void showDialog2() { new AlertDialog.Builder(this).setTitle("提示") .setIcon(R.drawable.ic_launcher).setMessage("带两个按钮的Dialog~") .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create().show(); } /** * 带三个按钮的Dialog */ public void showDialog3() { new AlertDialog.Builder(this).setTitle("提示") .setIcon(R.drawable.ic_launcher).setMessage("带三个按钮的Dialog~") .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).setNeutralButton("忽略", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create().show(); } /** * 带简单列表的Dialog */ public void showDialog4() { new AlertDialog.Builder(this).setTitle("带简单列表的Dialog~") .setIcon(R.drawable.ic_launcher).setItems(team, null) .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create().show(); } private ListView singleList = null; /** * 带单选列表的Dialog */ public void showDialog5() { AlertDialog alertDialog = new AlertDialog.Builder(this) .setTitle("带单选列表的Dialog~").setIcon(R.drawable.ic_launcher) .setSingleChoiceItems(team, 1, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText( MainActivity.this, "您选择了第" + (singleList.getCheckedItemPosition() + 1) + "项:" + singleList.getAdapter() .getItem(singleList.getCheckedItemPosition()), Toast.LENGTH_SHORT).show(); } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create(); singleList = alertDialog.getListView(); alertDialog.show(); } private ListView muitList = null; /** * 带多选列表的Dialog */ public void showDialog6() { AlertDialog alertDialog = new AlertDialog.Builder(this) .setTitle("带多选列表的Dialog~") .setIcon(R.drawable.ic_launcher) .setMultiChoiceItems(team, choice, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub choice[which] = isChecked; } }).setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub String s = "您选择了:"; if (muitList.getCheckedItemPositions().size() > 0) { for (int i = 0; i < muitList.getCount(); i++) { if (muitList.getCheckedItemPositions().get(i)) { s += muitList.getAdapter().getItem(i) .toString() + " "; } } } else { s += "0项"; } Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT) .show(); } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create(); muitList = alertDialog.getListView(); alertDialog.show(); } /** * 带输入框的Dialog */ public void showDialog7() { final EditText edittext = new EditText(this); new AlertDialog.Builder(this).setTitle("带输入框的Dialog~") .setIcon(R.drawable.ic_launcher).setView(edittext) .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "输入框中字符串是:" + edittext.getText().toString(), Toast.LENGTH_SHORT).show(); } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create().show(); } /** * 带自定义布局的Dialog */ public void showDialog8() { View layout = getLayoutInflater().inflate(R.layout.login, (ViewGroup) findViewById(R.id.login)); final EditText editId = (EditText) layout .findViewById(R.id.edit_login_id); final EditText editPass = (EditText) layout .findViewById(R.id.edit_login_pass); new AlertDialog.Builder(this).setTitle("带自定义布局的Dialog~") .setIcon(R.drawable.ic_launcher).setView(layout) .setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText( MainActivity.this, "登录名是:" + editId.getText().toString() + "\n密码是:" + editPass.getText().toString(), Toast.LENGTH_SHORT).show(); } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).create().show(); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/login" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:text="登录名称" android:textColor="#000000" android:textSize="15sp" android:textStyle="bold"/> <EditText android:id="@+id/edit_login_id" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入用户名或邮箱" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:text="登录密码" android:textColor="#000000" android:textSize="15sp" android:textStyle="bold"/> <EditText android:id="@+id/edit_login_pass" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入您的密码" android:password="true" /> </LinearLayout> </LinearLayout>