Android详细教程(基础篇):九、View组件高级篇:Dialog详解

本文详细介绍了Android中的Dialog组件,包括AlertDialog、DatePickerDialog、TimePickerDialog和ProgressDialog的使用方法,提供了丰富的示例代码,从简单对话框到定制对话框,再到日期和时间选择,以及进度显示,全方位解析Dialog的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.3. Dialog (对话框)

Dialog继承结构:

public class

Dialog

extends Object

implements DialogInterface KeyEvent.Callback View.OnCreateContextMenuListener Window.Callback

直接已知子类:

Known Direct Subclasses

AlertDialog, CharacterPickerDialog, Presentation

 

间接已知子类:

Known Indirect Subclasses

DatePickerDialog, ProgressDialog, TimePickerDialog

 

7.3.1 AlertDialog(告警对话框):

继承结构:

java.lang.Object

   

android.app.Dialog

 

   

android.app.AlertDialog

 

直接已知子类

Known Direct Subclasses

DatePickerDialog, ProgressDialog, TimePickerDialog

 

它的嵌套类AlertDialog.Builder:

java.lang.Object

   

android.app.AlertDialog.Builder

 

AlertDialog.Builder构造器:

AlertDialog.Builder(Context context)

 

使用AlertDialog.Builder可以产生AlertDialog对象:

public AlertDialog create ()

 

范例一:简单对话框

配置文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

</LinearLayout>

Activity:

package com.makyan.demo;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.os.Bundle;

public class AlertDialogActivity extends Activity {

     @Override

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器

          Dialog dialog = new AlertDialog.Builder(this)

               .setTitle("对话框")      // 创建标题

               .setMessage("显示提示信息") // 表示对话框中的内容

               .setIcon(R.drawable.pic_m) // 设置LOGO

               .create(); // 创建了一个对话框

          dialog.show() ; // 显示对话框

     }

}

 

 

演示效果:

范例二:增加按钮对话框

配置:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

     android:orientation="horizontal" android:layout_width="fill_parent"

     android:layout_height="fill_parent">

     <TextView

          android:id="@+id/mytext"

          android:text="杨雄工作室"

          android:layout_width="wrap_content"

          android:layout_height="wrap_content"/>

     <Button

          android:id="@+id/mybut"

          android:text="删除"

          android:layout_width="wrap_content"

          android:layout_height="wrap_content"/>

</LinearLayout>

 

Activity:

package com.makyan.demo;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class AlertDialogActivity extends Activity {

     private Button mybut = null ; // 定义按钮

     @Override

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器

          mybut = (Button) super.findViewById(R.id.mybut) ;  // 取得按钮

          mybut.setOnClickListener(new OnClickListenerImpl()) ;   // 设置事件类

     }

     private class OnClickListenerImpl implements OnClickListener {

          public void onClick(View view) {

               Dialog dialog = new AlertDialog.Builder(AlertDialogActivity.this)

                    .setTitle("确定删除?")        // 创建标题

                    .setMessage("您确定要删除该条信息吗?") // 表示对话框中的内容

                    .setIcon(R.drawable.pic_m) // 设置LOGO

                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                         @Override

                         public void onClick(DialogInterface dialog, int which) {

                             

                         }

                    }).setNeutralButton("查看详情", new DialogInterface.OnClickListener() {

                         @Override

                         public void onClick(DialogInterface dialog, int which) {

                             

                         }

                    }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

                         @Override

                         public void onClick(DialogInterface dialog, int which) {

                             

                         }

                    }).create(); // 创建了一个对话框

               dialog.show() ; // 显示对话框

          }

     }

}

 

演示效果:

范例三:退出按钮

配置文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

     android:orientation="horizontal" android:layout_width="fill_parent"

     android:layout_height="fill_parent">

     <ImageButton

          android:id="@+id/but"

          android:src="@drawable/exit"

          android:layout_width="wrap_content"

          android:layout_height="wrap_content"/>

</LinearLayout>

Activity:

package com.makyan.demo;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageButton;

public class AlertDialogActivity extends Activity {

     private ImageButton but = null ;   // 定义按钮

     @Override

     public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器

          this.but = (ImageButton) super.findViewById(R.id.but) ; // 取得按钮

          this.but.setOnClickListener(new OnClickListenerImpl()) ;     // 设置事件类

     }

     private class OnClickListenerImpl implements OnClickListener {

          @Override

          public void onClick(View view) {

               AlertDialogActivity.this.exitDialog() ;

          }

     }

     @Override

     public boolean onKeyDown(int keyCode, KeyEvent event) {

          if (keyCode == KeyEvent.KEYCODE_BACK) { // 返回键

               this.exitDialog() ;

          }

          return false ;

     }

     private void exitDialog(){

          Dialog dialog = new AlertDialog.Builder(AlertDialogActivity.this)

               .setTitle("程序退出?")        // 创建标题

               .setMessage("您确定要退出本程序吗?") // 表示对话框中的内容

               .setIcon(R.drawable.pic_m) // 设置LOGO

               .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                         AlertDialogActivity.this.finish() ; // 操作结束

                    }

               }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        

                    }

               }).create(); // 创建了一个对话框

 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值