Android笔记之AlertDialog使用

一、使用AlertDialog.Builder创建对话框需要了解以下几个方法:

setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems &  setSingleChoiceItems:设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton    :普通按钮setPositiveButton   :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框

二、创建如下对话框

Dialog alertDialog = new AlertDialog.Builder(this). 
                setTitle("确定删除?"). 
                setMessage("您确定删除该条信息吗?"). 
                setIcon(R.drawable.ic_launcher). 
                setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override 
                    public void onClick(DialogInterface dialog, int which) { 
                        // TODO Auto-generated method stub  
                        //按确定后的操作
} }). setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub
                        //按取消后的操作
} }). setNeutralButton("查看详情", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }). create(); alertDialog.show();

三、创建列表对话框

final String[] items={"删除","打开","复制","剪切"};
final
Dialog ad=new AlertDialog.Builder(this). setTitle("文件选项"). setItems(items,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "已选择"+items[which], Toast.LENGTH_SHORT).show(); } }).
      create(); btn1.setOnClickListener(
new OnClickListener(){ public void onClick(View v){ ad.show(); }

注意:(1)一个方法A中定义的变量在另一个方法B中要被调用,必须为final,即使B在A方法的里面。

(2)items[which]:列表项中被选择的项

(3)将setItems(items,new DialogInterface.OnClickListener() {})替换为

setSingleChoiceItems(items,2,new DialogInterface.OnClickListener(){})则为单项按钮,2代表默认选择第3个,-1代表默认不选择。

 (4)如果new AlertDialog.Builder(this).出现“ constructor AlertDialog.Builder(new View.OnClickListener(){}) is  undefined”的错误提示

在“this”前面加上本Activity名称就行

四、自定义对话框样式

(1)给对话框添加一个控件,如EdiText,只需 .setView(new EditText(this))

 EditText name=new EditText(this);
  Dialog alertDialog =new AlertDialog.Builder(ReadText.this). 
  setTitle("重命名").
  setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
                // TODO Auto-generated method stub  
            } 
        }). 
setView(name).
create(); alertDialog.show();

(2)给Dialog设计布局文件:rename_dialog.xml,布局文件只涉及对话框的中间部分,不改变title和button

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <EditText android:id="@+id/rename_editText" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="14.0dip" 
        android:layout_marginTop="22.0dip"
        android:layout_marginRight="14.0dip" 
        android:layout_marginBottom="64.0dip" 
        android:singleLine="true" />
</LinearLayout>

代码部分

        LayoutInflater factory = LayoutInflater.from(ReadText.this);  
        //得到自定义对话框  
        View DialogView = factory.inflate(R.layout.rename_dialog, null);
        final EditText name=(EditText)DialogView.findViewById(R.id.rename_editText);//初始化对话框组件
        name.setText(Title_Name.getText().toString());
        name.selectAll();//让输入框文本全选
        Dialog alertDialog =new AlertDialog.Builder(ReadText.this).
        setTitle("重命名").
        setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub  
                //按确定后的操作
            }
        }).
        setView(DialogView).create();  
        alertDialog.show(); 
原文地址:https://www.cnblogs.com/xingyyy/p/3261081.html