博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 自定义AlertDialog类
阅读量:5973 次
发布时间:2019-06-19

本文共 3613 字,大约阅读时间需要 12 分钟。

还是先从最简单的开始吧,然后一步一步的扩展。

为了保证软件上所谓的低耦合度和可重用性,这里不得不需要单独建立一个类CustomerDialog,然后继承AlertDialog
public class CustomerDialog extends AlertDialog {
}
然后添加一个带Context参数的构造器,context(上下文)通俗点讲一般是指归属于那个,这里就归属于调用的那个Acitivity,也就是说这个对话框是针对调用的那个Activity
public CustomerDialog(Context context) {
super(context);
this.context = context;
}
接下来需要对AlertDialog的 onCreate方法覆盖,否则在外面就无法获得你创建的那个自定义对话框的内容了(当然你也可以直接在构造方法里调用setView,当这样一来耦合度就增加了),然后把自己的自定义内容通过setView关联进去。
@Override
protected void onCreate(Bundle savedInstanceState) {
          TextView textView = new TextView(context);
          textView.setText("这是一个自定义对话框");
          textView.setTextSize(24);
          textView.setTextColor(Color.BLACK);
          setView(textView);
          super.onCreate(savedInstanceState);
}
具体实现:主xml文件:

View Code

自定义dialog的xml文件:

View Code

主程序如下:

package com.example.androidalertdialogcustometest;import android.os.Bundle;import android.app.Activity;import android.app.Dialog;import android.view.Menu;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {        private static final int CUSTOMER_DIALOG=1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                Button button = (Button) findViewById(R.id.button);         View.OnClickListener listener = new View.OnClickListener() {         @SuppressWarnings("deprecation")        @Override         public void onClick(View view) {         showDialog(CUSTOMER_DIALOG);         }         };         button.setOnClickListener(listener);     }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    protected Dialog onCreateDialog(int id) {        // TODO Auto-generated method stub        CustomerDialog dialog = null;         switch(id) {         case CUSTOMER_DIALOG:         dialog = new CustomerDialog(MainActivity.this);         dialog.setTitle("自定义对话框");         dialog.setIcon(R.drawable.ia);         break;         }         return dialog;     }}
View Code

自定义AlertDialog类:

package com.example.androidalertdialogcustometest;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class CustomerDialog extends AlertDialog {    private Context mContext;    protected CustomerDialog(Context context) {        super(context);        // TODO Auto-generated constructor stub        this.mContext=context;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        this.setContentView(R.layout.dialog);        Button button=(Button)findViewById(R.id.buttondialog);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                Toast.makeText(mContext, "dialog light", Toast.LENGTH_SHORT).show();            }        });        /*        TextView textView = new TextView(mContext);         textView.setText("这是一个自定义对话框");         textView.setTextSize(24);         textView.setTextColor(Color.BLACK);         setView(textView);         */    }}
View Code

显示效果:

 

 

 

 AlertDialog基本使用详解:

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://lrfox.baihongyu.com/

你可能感兴趣的文章
The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
查看>>
redis主从配置<转>
查看>>
karma如何与测试框架合作2之webpack
查看>>
10分钟搭建MySQL Binlog分析+可视化方案
查看>>
vmware虚拟机配置串口
查看>>
小型自动化运维--expect脚本之传递函数
查看>>
Nsrp实现juniper防火墙的高可用性【HA】!
查看>>
oracle11g 安装在rhel5.0笔记
查看>>
解决Lync 2013演示PPT提示证书问题的多种方法
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
C++ 构造函数与析构函数
查看>>
ssh免密码登录
查看>>
Linux下Django环境安装
查看>>
如何在指定的内容中找出指定字符串的个数
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Spring MVC请求处理流程分析
查看>>
Web应用工作原理、动态网页技术
查看>>
EXCEL工作表保护密码破解 宏撤销保护图文教程
查看>>
Catalan数(卡特兰数)
查看>>