对话框

对话框是一种显示于Activity之上的界面元素,是作为Activity的一部分被创建和显示的,常用的对话框种类有:提示对话框AlertDialog、进度对话框ProgressDialog、日期选择对话框DatePickerDialog、时间选择对话框TimePickerDialog。
对话框_第1张图片
创建AlertDialog对话框的主要步骤:
A,获得AlertDialog静态内部类Builder对象并由该类创建对话框
B,通过Buidler对象设置对话框标题、按钮及其将要响应事件
C,调用Builder的create()方法创建对话框。
D,调用AlertDialog的show()方法显示对话框。
提供的方法主要有:
setTitle():设置对话框标题。
setIcon():设置对话框图标。
setMessage():设置对话框提示信息。
setItems():设置对话框要显示的一个列表。
setSingleChoiceItems():设置对话框显示一个单选的List。
setMultiChoiceItems():设置对话框显示一系列的复选框。
setPositiveButton():给对话框添加Yes按钮。
setNegativeButton():给对话框添加No按钮。
setView():给对话框设置自定义样式。
create():创建对话框。
show()和showDialog():显示对话框。
onCreateDialog():创建对话框的实现.
onPrepareDialog():更改已有对话框时调用
创建简单的提示对话框
当创建对话框时,首先需要重写onCreate()方法,可通过setTitle设置标题、setContentView()设置内容等。
可以设置属性,包括标题、按钮和图标等。
.setIcon(R.drawable.icon)//图标,显示在对话框标题左侧
.setTitle(“用户登录界面”) //对话框标题
.setView(myviewondialog)//参数为上面定义的View实例名,显示R.layout.dialogshow.xml布局文件

package com.AlterDlgDemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
public class AlterDlgDemo_MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout. main );
        AlertDialog.Builder my_ADialog = new AlertDialog.Builder( this );//新建 AlertDialog.Builder 对象 
        my_ADialog.setTitle( "Android 提示 " );// 设置标题 
        my_ADialog.setMessage( "这个是AlertDialog提示对话框 !!" );// 设置显示消息
        my_ADialog.show();// 显示 
    }
}

运行效果
对话框_第2张图片
当然还可以创建自定义的具有简单界面的提示对话框,步骤为:A)在相应的工程中修改res\layout\main.xml文件,添加Button按钮,并指定显示模式(如按钮是否为包裹住文字内容)、id、文字等 B)为即将添加的对话框设计布局。 C)在Java代码中随着触发事件而弹出相应的AlterDialog对话框 ,通过setContentView(R.layout.main)语句设定使用默认的布局文件。定义一个Button,这个Button通过findViewById(),和在main.xml中已经设定好的按钮建立了联系,因此显示在默认布局中的按钮就是在main.xml中定义好的按钮 。通过OnClickListener,侦听此按钮的被单击事件 。如果按钮被单击,则定义一个LayoutInflater类的实例 。LayoutInflater类的作用类似于findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件并且实例化,而findViewById()是找具体xml下具体widget控件(如Button、TextView等)。设定这个对话框的标题并设定对话框中的按钮以及相应按钮对应的单击事件。通过.setView(已经定义的View实例名),显示R.layout.dialogshow.xml这个布局文件。 通过onCreate()创建Activity。 通过调用对话框实例的show()方法显示这个对话框。
主Activity代码:

public class ShowDialog_Activity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//应用默认的布局main.xml
        Button mybutton = (Button)findViewById(R.id.button1);//显示id为“button1”的按钮,其定义见main.xml
        //String pw = findViewById(R.id.password_edit).toString();//密码
        mybutton.setOnClickListener(new OnClickListener(){ //侦听单击此按钮的事件
          public void onClick(View v) {//单击此按钮后显示对话框。对话框的布局定义在res\dialogshow.xml中
             LayoutInflater usingdialoglayoutxml = LayoutInflater.from(ShowDialog_Activity.this);//这里的参数ShowDialog_Activity为类名
             final View myviewondialog = usingdialoglayoutxml.inflate(R.layout.dialogshow, null);//按照设定的布局显示对话框
                    AlertDialog mydialoginstance = new AlertDialog.Builder(ShowDialog_Activity.this) //这里的参数ShowDialog_Activity为类名
                        .setIcon(R.drawable.icon)//图标,显示在对话框标题左侧
                        .setTitle("用户登录界面")  //对话框标题
                        .setView(myviewondialog)//注意参数为上面定义的View实例名,意为显示R.layout.dialogshow.xml这个布局文件
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() { //“确定”按钮对应的功能
                            public void onClick(DialogInterface dialog, int whichButton) {//侦听是否有单击这个确定按钮
                                Toast.makeText(getApplicationContext(), "感谢您输入了信息,再见", Toast.LENGTH_LONG).show();
                            }})
                        .setNegativeButton("结束", new DialogInterface.OnClickListener() { //“结束”按钮对应的功能
                            public void onClick(DialogInterface dialog, int whichButton) {  //侦听是否有单击这个取消按钮
                                ShowDialog_Activity.this.finish();//退出程序
                            }})
                        .create(); 
                    mydialoginstance.show(); //显示对话框
                }
        });
    }
}

dialogshow 的xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" >  <!-- 定义一个线性布局样式 -->
<TextView android:id="@+id/username_view" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="用户名" android:gravity="left"/>  <!-- 定义“用户名”,定义其id、高、宽、位置、显示文字-->
<EditText  android:id="@+id/username_edit" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" /> <!-- 对应用户名的输入框 -->
<TextView  android:id="@+id/password_view" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:text="密码" android:gravity="left"/> <!-- 定义“密码”,定义其id、高、宽、位置、显示文字-->
<EditText  android:id="@+id/password_edit" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:scrollHorizontally="true" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" android:password="true" />  <!-- 对应“密码”的输入框,android:password 为显示* -->
</LinearLayout>

dialogshow:
对话框_第3张图片
主界面:
对话框_第4张图片

你可能感兴趣的:(android,对话框,界面)