欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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(); 
  } 
 } 
} 

实现的效果:

android自定义AlertDialog对话框

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

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); 
  } 

实现的效果:

android自定义AlertDialog对话框

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

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