android自定义AlertDialog对话框
程序员文章站
2024-02-21 18:54:46
前面一篇文章介绍了alertdialog的四种简单使用,但是有些时候为了让整个app的风格统一,或者说前面的四种形式不符合项目中的需求,这个时候就需要我们自定义alertd...
前面一篇文章介绍了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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java学习日记:UI篇(7)--谢尔宾斯基三角形
下一篇: Java中的四种单例模式浅析