android自定义AlertDialog对话框

前面一篇文章http://www.jb51.net/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.jb51.net/201701/yuanma/androidAlertDialog(jb51.net).rar

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

时间: 2024-09-21 16:29:07

android自定义AlertDialog对话框的相关文章

Android 自定义AlertDialog对话框样式

实际的项目开发当中,经常需要根据实际的需求来自定义AlertDialog.最近在开发一个WIFI连接的功能,点击WIFI需要弹出自定义密码输入框.在此权当记录 效果图 点击首页的Button即跳出对话框,显示WIFI信息(TextView),密码输入框(EditText),取消和连接按钮(Button) 实现 根据自己实际的需求,为AlertDialog创建一个布局,在此我需要定义一个如图所示的WIFI密码输入框,故在 res/layout 目录下建立一个 dialog_layout.xml 文

简析Android多种AlertDialog对话框效果_Android

android提供了四类常用的对话框,本文分享具体实现方法: 1.AlertDialog,功能最丰富,实际运用最广泛 2.progressDialog,进度条对话框 3.DatePickerDialog,日期选择对话框 4.TimePickerDialog,时间选择对话框 这里主要介绍第一种,剩下的三种都是第一种的子类,所以其方法,都可以直接使用. 创建一个对话框一般需要下面几个步骤 1.创建AlertDialog.Builder对象 2.对AlertDialog.Builder通过SetTit

简析Android多种AlertDialog对话框效果

android提供了四类常用的对话框,本文分享具体实现方法: 1.AlertDialog,功能最丰富,实际运用最广泛 2.progressDialog,进度条对话框 3.DatePickerDialog,日期选择对话框 4.TimePickerDialog,时间选择对话框 这里主要介绍第一种,剩下的三种都是第一种的子类,所以其方法,都可以直接使用. 创建一个对话框一般需要下面几个步骤 1.创建AlertDialog.Builder对象 2.对AlertDialog.Builder通过SetTit

【Android】Android中AlertDialog对话框的使用实例

package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; import android.

Android自定义等待对话框_Android

最近,看了好多的APP的等待对话框,发现自己的太lower,于是就研究了一番,最后经过苦心努力,实现一个. 自定义一个LoadingIndicatorView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中LoadingIndicatorView使用自定义的属性(注意namespace) 在LoadingIndicatorView的构造方法中通过TypedArray获取 描述就提供这些,一下是代码的展示,非常的

Android自定义等待对话框

最近,看了好多的APP的等待对话框,发现自己的太lower,于是就研究了一番,最后经过苦心努力,实现一个. 自定义一个LoadingIndicatorView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中LoadingIndicatorView使用自定义的属性(注意namespace) 在LoadingIndicatorView的构造方法中通过TypedArray获取 描述就提供这些,一下是代码的展示,非常的

Android如何自定义升级对话框示例详解

前言 本文主要给大家介绍了关于Android自定义升级对话框的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现的效果如下所示 其实这也只是一个DialogFragment 而已,重点只是在于界面的设计 想要使用做出这样一个DialogFragment ,需要自定义一个View,然后将该View传入到该Dialog中 先定义布局,一个TextView用于标题,一个TextView用于升级内容阐述,一个ImageView,一个确认升级的按钮 <?xml version

【Android】请问如何去除自定义AlertDialog的背景?

问题描述 [Android]请问如何去除自定义AlertDialog的背景? Activity public void onSchulteButtonClick(View v) { LayoutInflater inflater = LayoutInflater.from(this); View SchulteSelectView = inflater.inflate( R.layout.activity_schulte_select_dialog, null); AlertDialog.Bui

Android常用的AlertDialog对话框及自定义对话框

常用的Dialog有确认对话框,单选按钮对话框,多选按钮对话框,复选按钮对话框另外还有自定义的对话框 AlertDialog的常用方法 setTitle:为对话框设置标题 setMessage:为对话框设置内容 setIcon:为对话框设置图标 setItems设置对话框要显示的list setMultiChoiceItems:一般用于复选框显示 setSingleChoiceItem:,设置单选按钮 setNeutralButton:普通按钮 setPositiveButton:添加确定按钮