博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android ui定义自己的dialog(项目框架搭建时就写好,之后事半功倍)
阅读量:5362 次
发布时间:2019-06-15

本文共 3809 字,大约阅读时间需要 12 分钟。

自定义一个dialog:

之前有很多博客都有过这方面的介绍,可是个人觉得通常不是很全面,通用性不是很强,一般会定义一个自己的dialog类,然后去使用,难道每一个dialog都要定义一个class吗??

首先:dialog一般包含一个标题部分,内容部分,按钮部分,风格部分。progressdialog则多一个进度条

那么我们就不妨写一个dialog类,在构造方法中,我们把标题,内容,按钮信息都给他,然后可以show出来

然后,在构造方法中添加一个接口,接口中使用确定,取消等等的按钮的回调。

那么开始咯:

第一步定义一个自己的dialog类

import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.easipass.R;public class CustormDialog extends Dialog implements DialogInterface {
private String title; private String content; private DialogCallBack callback; private int index; /*** * @param context * @param title 对话框标题 * @param content 对话框内容 * @param theme 对应的style 这里为R.style.CustomDialog_1 可自定义style * @param dialogcallback 确定取消按钮的回调 分别是 onCancle onOk * @param index 显示几个button 1 为只有一个确定键,其他为有确定取消两个按钮 * * 调用实例 * dialog = new CustormDialog(SettingsActivity.this,"缓存清理", * "点击确定为您清理以下历史信息:\n系统通知,提箱小票,行业资讯,装箱单录入", R.style.CustomDialog_1,    * new DialogCallBack(){     * @Override     * public void OkDown() { * dialog.dismiss(); * //这里放 确定按钮响应   * }    * @Override    * public void CancleDown() { * dialog.dismiss(); * //这里放取消按钮响应    * } },2); */ public CustormDialog(Context context,String title,String content,int theme,DialogCallBack dialogcallback,int index) { super(context, theme); this.title = title; this.content = content; this.callback = dialogcallback; this.index = index; }@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dg_custormdialog); TextView titl = (TextView) findViewById(R.id.title); TextView cont = (TextView) findViewById(R.id.tv_content); titl.setText(title); cont.setText(content); Button cancel = (Button) findViewById(R.id.cancel); Button ok = (Button) findViewById(R.id.sure); if(index == 1){ cancel.setVisibility(View.GONE); }else{ cancel.setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View v) { CustormDialog.this.dismiss(); callback.CancleDown(); } }); } ok.setOnClickListener(new android.view.View.OnClickListener() { @Override public void onClick(View v) { CustormDialog.this.dismiss(); callback.OkDown(); } }); } }

这个类中实现了接口 DialogCallBack  

再定义下这个回调:

public interface DialogCallBack {
abstract void OkDown(); abstract void CancleDown(); }

初步的框架就有了  

接下来我们把布局写一下(当然框架在那,布局完全自己发挥就好了)

系统自带的style通常让我们受不鸟,它有一个白色边框,等等,那我们最好定义一个自己的style  

一切顺利的话,我们尝试一下哦  

dialog = new CustormDialog(SettingsActivity.this,"放标题","放内容", R.style.CustomDialog_1,    		new DialogCallBack(){@Overridepublic void OkDown() {		                                   	dialog.dismiss();}@Overridepublic void CancleDown() {                	dialog.dismiss();					}    	    },2);

这里的 2是显示 确定 取消 两个按钮,如果填写1,那就只有确定按钮  

自己发挥咯

    

个人布局的比较丑啦,相信大家比俺文艺很多

有了这一个类,以后有确定取消按钮,以及只有确定按钮的对话框都搞定啦

ps,如果还要一次性搞定progressdialog,那就用一个帧布局,就好了,给构造添加一个参数,废话不多说了,相信大家也没有这么笨的,举一反三啦

转载于:https://www.cnblogs.com/Free-Thinker/p/3734765.html

你可能感兴趣的文章
hash储存机制
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
Docker 安装MySQL5.7(三)
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
CF1067C Knights 构造
查看>>