简单好用的自定义Dialog(一)

AlterDialog.Builder setTitle():设置标题。

AlterDialog.Builder setIcon():设置标题的图标。

AlterDialog.Builder setMessage():设置标题的内容。

AlterDialog.Builder setCancelable():设置是否模态,一般设置为false,表示模态,要求用户必须采取行动才能继续进行剩下的操作。

Tips:AlterDialog.Builder的很多设置属性的方法,返回的均是这个AlterDialog.Builder对象,所以可以使用链式方式编写代码,这样更方便。

当一个对话框调用了show()方法后,展示到屏幕上,如果需要消除它,可以使用DialogInterface接口声明的两个方 法,cancel()和dismiss()使对话框取或者消除,这两个方法的作用是一样的,不过推荐使用dismiss()。Dialog和 AlterDialog都实现了DialogInterface接口,所以只要是对话框,均可以使用这两个方法来消除对话框。

二、 几种常用的dialog

1)简单的对话

Dialog dialog = new AlertDialog.Builder(getActivity())

.setTitle(R.string.left_slider_alertdialog_title)

// 创建标题

.setMessage(R.string.left_slider_alertdialog_message)

// 表示对话框中的内容

.setPositiveButton(R.string.left_slider_alertdialog_ok,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

UserInfoDBHelper.logout2();

refreshUserInfo();

}

})

.setNegativeButton(R.string.left_slider_alertdialog_cancel,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

}).create();

dialog.show();

}

(https://img-blog.csdn.net/20170301094527677?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzcyMzcyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

2)

AlterDialog的按钮

AlterDialog内置了三个按钮,可以直接使用setXxxButton()方法进行设置,对于一般的对话框,使用三个按钮基本上也够用了,下面是这三个方法的签名:

AlterDialog.Builder setPositiveButton(CharSquence text , DialogInterFace.OnClickListener):一个积极的按钮,一般用于“OK”或者“继续”等操作。

AlterDialog.Builder setNegativeButton(CharSquence text , DialogInterFace.OnClickListener):一个负面的按钮,一般用于“取消”操作。

AlterDialog.Builder setNeutralButton(CharSquence text , DialogInterFace.OnClickListener):一个比较中性的按钮,一般用于“忽略”、“以后提醒我”等操作。

上面介绍的DialogInterface接口,还提供了一系列的事件响应,这三个按钮均需要传递一个 DialogInterFace.OnClickListener接口对象,实现其点击事件的触发,在这个接口中需要实现一个 onClick(DialogInterface dialog,int which),dialog为当前触发事件的对话框对象接口,可以直接强制转换为AlterDialog进行操作;which为点击按钮的标识符,是一个 整形的数据,对于这三个按钮而言,每个按钮使用不同的int类型数据进行标识:Positive(-1)、Negative(-2)、 Neutral(-3)。

而除了专门为按钮点击实现的DialogInterFace.OnClickListener事件外,DialogInterface还提供了 一些其他的事件,供Dialog对象响应,这些事件只是对Dialog声明周期各个状态的响应,一看就明白了,就不再详细讲解了,下面是这几个事件的说 明:

interface DialogInterface.OnCancelListener:当对话框调用cancel()方法的时候触发。

interface DialogInterface.OnDismissListener:当对话框调用dismiss()方法的时候触发。

interface DialogInterface.OnShowListener:当对话框调用show()方法的时候触发。

interface DialogInterface.OnMultiChoiceListener:当对话框使用多选列表,并且选中的时候触发。

AlertDialog.Builder builder = new AlertDialog.Builder(

MainActivity.this);

builder.setTitle(“提示”);

builder.setMessage(“这是一个多按钮普通的对话框!”);

builder.setIcon(R.drawable.ic_launcher);

builder.setPositiveButton(“确定”, new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, “确定被点击”,

Toast.LENGTH_SHORT).show();

dialog.dismiss();

}

});

builder.setNegativeButton(“否定”, new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, “否定被点击”,

Toast.LENGTH_SHORT).show();

dialog.dismiss();

}

});

builder.setNeutralButton(“忽略”, new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, “忽略被点击”,

Toast.LENGTH_SHORT).show();

dialog.cancel();

}

});

builder.show();

这里写图片描述

3)AlterDialog的列表形式

AlterDialog除了展示一些提示信息,还可以展示一种列表的形式,需要使用到 Builder.setItems(CharSequence[] items,DialogInterface.OnClickListener listener)方法进行设置,它需要传递一个CharSequenece类型的数组,以绑定列表的数据,它同样需要传递一个 DialogInterface.OnClickListener接口,以响应列表项的点击,而这个接口中onClick方法的which参数,为当前点 击触发项的items中的下标。

btnListView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值