对话框

对话框是一种显示于Activity之上的界面元素,是作为Activity的一部分被创建和显示的,常用的对话框种类有:提示对话框AlertDialog、进度对话框ProgressDialog、日期选择对话框DatePickerDialog、时间选择对话框TimePickerDialog。
这里写图片描述
创建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();// 显示 
    }
}

运行效果
这里写图片描述
当然还可以创建自定义的具有简单界面的提示对话框,步骤为: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:
这里写图片描述
主界面:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值