android自定义AlertDialog对话框
前面一篇文章https://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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Android实现点击AlertDialog上按钮时不关闭对话框的方法
- Android中AlertDialog各种对话框的用法实例详解
- Android使用AlertDialog实现的信息列表单选、多选对话框功能
- Android中AlertDialog 点击按钮后不关闭对话框的功能
- Android修改源码解决Alertdialog触摸对话框边缘消失的问题
- Android 自定义AlertDialog对话框样式
- Android对话框AlertDialog.Builder使用方法详解
- ANDROID中自定义对话框AlertDialog使用示例
- Android Alertdialog(实现警告对话框)
- Android开发之AlertDialog实现弹出对话框
相关文章
Android实现EditText控件禁止输入内容的方法(附测试demo)
这篇文章主要介绍了Android实现EditText控件禁止输入内容的方法,涉及Android针对EditText控件属性设置的相关技巧,需要的朋友可以参考下2015-12-12Android编程实现为ListView创建上下文菜单(ContextMenu)的方法
这篇文章主要介绍了Android编程实现为ListView创建上下文菜单(ContextMenu)的方法,简单分析了上下文菜单的功能及ListView创建上下文菜单(ContextMenu)的具体步骤与相关操作技巧,需要的朋友可以参考下2017-02-02Android Studio报:“Attribute application@theme or @ icon ”问题的解
这篇文章主要给大家介绍了关于Android Studio报:“Attribute application@theme or @ icon ”问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。2017-12-12Android Studio+Servlet+MySql实现登录注册
对于大多数的APP都有登录注册这个功能,本文就来介绍一下Android Studio+Servlet+MySql实现登录注册,需要的朋友们下面随着小编来一起学习学习吧2021-05-05
最新评论