android自定义AlertDialog对话框

发布时间 - 2026-01-10 22:35:00    点击率:

前面一篇文章https://www./article/103036.htm介绍了alertDialog的四种简单使用,但是有些时候为了让整个app的风格统一,或者说前面的四种形式不符合项目中的需求,这个时候就需要我们自定义alertDialog了。直接上代码

CustomAlertDialog:

import android.app.Dialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
 
/** 
 * Created by yk on 2017/1/17. 
 */ 
 
public class CustomAlertDialog extends Dialog implements View.OnClickListener { 
 
 
 
 public interface OnDialogButtonClickListener { 
  /** 
   * 点击按钮的回调方法 
   * 
   * @param requestCode 
   * @param isPositive 
   */ 
  void onDialogButtonClick(int requestCode, boolean isPositive); 
 } 
 
 private Context context; 
 private String title; 
 private String message; 
 private String strPositive; 
 private String strNegative; 
 private int requestCode; 
 private OnDialogButtonClickListener listener; 
 
 public CustomAlertDialog(Context context, String title, String message, int requestCode, 
        OnDialogButtonClickListener listener) { 
  super(context, R.style.MyDialog); 
  this.context=context; 
  this.title=title; 
  this.message=message; 
  this.requestCode=requestCode; 
  this.listener=listener; 
 
 } 
 
 private TextView tvTitle; 
 private TextView tvMessage; 
 private Button btnPositive; 
 private Button btnNegative; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.alert_dialog); 
//  setCancelable(false);//设置点击对话框外部和按返回键都不可以取消 
//  setCanceledOnTouchOutside(false);//设置点击对话框外部是否可以取消,默认是不可以取消(但是点返回键可以取消) 
 
  tvTitle = (TextView) findViewById(R.id.tvAlertDialogTitle); 
  tvMessage = (TextView) findViewById(R.id.tvAlertDialogMessage); 
  btnPositive = (Button) findViewById(R.id.btnAlertDialogPositive); 
  btnNegative = (Button) findViewById(R.id.btnAlertDialogNegative); 
 
  tvTitle.setText(title); 
  tvMessage.setText(message); 
 
  btnPositive.setOnClickListener(this); 
  btnNegative.setOnClickListener(this); 
 } 
 
 @Override 
 public void onClick(View view) { 
  switch (view.getId()){ 
   case R.id.btnAlertDialogPositive: 
    //确定按钮 
    listener.onDialogButtonClick(requestCode,true); 
    break; 
   case R.id.btnAlertDialogNegative: 
    //取消按钮 
    listener.onDialogButtonClick(requestCode,false); 
    break; 
  } 
  dismiss(); 
 } 
} 

 MainActivity:

package com.example.yk.dialogtest; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toast; 
 
public class CustomDialogActivity extends AppCompatActivity implements CustomAlertDialog.OnDialogButtonClickListener { 
 
 private static final int REQUEST_CODE_FIRST = 1; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_custom_dialog); 
  CustomAlertDialog alertDialog=new CustomAlertDialog(this,"title","message",REQUEST_CODE_FIRST,this); 
  alertDialog.show(); 
 
 } 
 
 @Override 
 public void onDialogButtonClick(int requestCode, boolean isPositive) { 
  if(requestCode==REQUEST_CODE_FIRST && isPositive){ 
   Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show(); 
  } else if (requestCode==REQUEST_CODE_FIRST && !isPositive) { 
   Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show(); 
  } 
 } 
} 

实现的效果:

如果我们需要自定义“确定”和“取消”按钮所显示的字,可以再写一个构造方法,比如:

public AlertDialog(Context context, String title, String message,String strPositive, String strNegative, int requestCode, OnDialogButtonClickListener listener) { 
  super(context, R.style.MyDialog); 
 
  this.context = context; 
  this.title = title; 
  this.message = message; 
  this.strPositive = strPositive; 
  this.strNegative = strNegative; 
  this.requestCode = requestCode; 
  this.listener = listener;  
 } 
if(!TextUtils.isEmpty(strPositive)){ 
   btnPositive.setText(strPositive); 
  } 
  if(!TextUtils.isEmpty(strNegative)){ 
   btnNegative.setText(strNegative); 
  } 

实现的效果:


源码(包括上篇文章中四种简单alertDialog的使用):http://xiazai./201701/yuanma/androidAlertDialog().rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # AlertDialog  # Android实现点击AlertDialog上按钮时不关闭对话框的方法  # Android中AlertDialog各种对话框的用法实例详解  # Android使用AlertDialog实现的信息列表单选、多选对话框功能  # Android中AlertDialog 点击按钮后不关闭对话框的功能  # Android修改源码解决Alertdialog触摸对话框边缘消失的问题  # Android 自定义AlertDialog对话框样式  # Android对话框AlertDialog.Builder使用方法详解  # ANDROID中自定义对话框AlertDialog使用示例  # Android Alertdialog(实现警告对话框)  # Android开发之AlertDialog实现弹出对话框  # 四种  # 自定义  # 对话框  # 都不  # 不可以  # 这个时候  # 不符合  # 或者说  # 回调  # 一篇文章  # 大家多多  # 上篇  # 再写  # extends  # public  # implements  # interface  # OnClickListener  # OnDialogButtonClickListener  # TextView 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 简历在线制作网站免费版,如何创建个人简历?  Android使用GridView实现日历的简单功能  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  ,网页ppt怎么弄成自己的ppt?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel用户密码怎么加密_Laravel Hash门面使用教程  中山网站制作网页,中山新生登记系统登记流程?  如何在阿里云服务器自主搭建网站?  如何快速搭建高效WAP手机网站吸引移动用户?  实例解析Array和String方法  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel如何创建自定义Facades?(详细步骤)  七夕网站制作视频,七夕大促活动怎么报名?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  如何基于云服务器快速搭建个人网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Firefox Developer Edition开发者版本入口  如何用PHP快速搭建高效网站?分步指南  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  java获取注册ip实例  Linux系统命令中screen命令详解  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  详解jQuery中基本的动画方法  如何在IIS7中新建站点?详细步骤解析  如何撰写建站申请书?关键要点有哪些?  如何在云主机上快速搭建网站?  网站建设保证美观性,需要考虑的几点问题!  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel如何处理文件下载请求?(Response示例)  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  java ZXing生成二维码及条码实例分享  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  bootstrap日历插件datetimepicker使用方法  如何快速查询网站的真实建站时间?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  网站图片在线制作软件,怎么在图片上做链接?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  香港服务器如何优化才能显著提升网站加载速度?  太平洋网站制作公司,网络用语太平洋是什么意思?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?