android自定义dialog对话框,android自定义AlertDialog对话框

前面一篇文章https://www.oudahe.com/p/26789/介绍了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();

}

}

}

实现的效果:

15059064361.jpg?2017017114635

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

public AlertDialog(Context context,String strPositive,String strNegative,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);

}

实现的效果:

15059064362.jpg?2017017114713

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值