文档章节

自定义AlertDialog

短短的歼击机
 短短的歼击机
发布于 2014/08/21 10:37
字数 352
阅读 318
收藏 3

常见的一种方法:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. AlertDialog.Builder builder;  

  2.                 AlertDialog alertDialog;  

  3.   

  4.                 LayoutInflater inflater = getLayoutInflater();  

  5.                 // 添加自定义的布局文件  

  6.                 View layout = LayoutInflater.from(TestOne.this).inflate(  

  7.                         R.layout.dialog, null);  

  8.                 final TextView text = (TextView) layout.findViewById(R.id.tv1);  

  9.                 // 添加点击事件  

  10.                 text.setOnClickListener(new OnClickListener() {  

  11.   

  12.                     @Override  

  13.                     public void onClick(View v) {  

  14.                         // TODO Auto-generated method stub  

  15.                         text.setText("call");  

  16.                     }  

  17.                 });  

  18.   

  19.                 builder = new AlertDialog.Builder(TestOne.this);  

  20.                 alertDialog = builder.create();  

  21.                 // 去掉边框的黑色,因为设置的与四周的间距为0  

  22.                 alertDialog.setView(layout, 0, 0, 0, 0);  

  23.                 alertDialog.show();  

  24.                 // 修改大小  

  25.                 WindowManager.LayoutParams params = alertDialog.getWindow()  

  26.                         .getAttributes();  

  27.                 params.width = 350;  

  28.                 params.height = 200;  

  29.                 alertDialog.getWindow().setAttributes(params);  


这样 ,重新给它填充自定义的布局视图,但缺乏可扩展性,而且每次使用还得重新定义。



重写AlertDialog类,定义方法:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. /**  

  2.  * 自定义的对话框  

  3.  */  

  4. public abstract class MyAlerDialog extends AlertDialog implements  

  5.         android.view.View.OnClickListener {  

  6.   

  7.     protected MyAlerDialog(Context context) {  

  8.         super(context);  

  9.         // TODO Auto-generated constructor stub  

  10.     }  

  11.   

  12.     /**  

  13.      * 布局中的其中一个组件  

  14.      */  

  15.     private TextView txt;  

  16.   

  17.     @Override  

  18.     protected void onCreate(Bundle savedInstanceState) {  

  19.         // TODO Auto-generated method stub  

  20.         super.onCreate(savedInstanceState);  

  21.         // 加载自定义布局  

  22.         setContentView(R.layout.dialog);  

  23.         // setDialogSize(300, 200);  

  24.         txt = (TextView) findViewById(R.id.tv1);  

  25.         txt.setOnClickListener(this);  

  26.     }  

  27.   

  28.     /**  

  29.      * 修改 框体大小  

  30.      *   

  31.      * @param width  

  32.      * @param height  

  33.      */  

  34.     public void setDialogSize(int width, int height) {  

  35.         WindowManager.LayoutParams params = getWindow().getAttributes();  

  36.         params.width = 350;  

  37.         params.height = 200;  

  38.         this.getWindow().setAttributes(params);  

  39.     }  

  40.   

  41.     public abstract void clickCallBack();  

  42.       

  43.     /**  

  44.      * 点击事件  

  45.      */  

  46.     @Override  

  47.     public void onClick(View v) {  

  48.         // TODO Auto-generated method stub  

  49.         if (v == txt) {  

  50.             clickCallBack();  

  51.         }  

  52.     }  

  53.   

  54. }  

在活动中使用:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

  1. MyAlerDialog mydialog = new MyAlerDialog(this) {  

  2.             // 重写callback方法  

  3.             @Override  

  4.             public void clickCallBack() {  

  5.                 // TODO Auto-generated method stub  

  6.                 btn.setText("call");  

  7.             }  

  8.         };  

  9.         mydialog.show();  

自己写的功能就封装了两个,有需要的童鞋可以很容易的扩展。这种方法,显然相对于上一种要有优势得多啦。


本文转载自:

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
Android AlertDialog的一切

AlertDialog是用来和用户交流互动的很好的工具,善用之可以为应用程序增色。有人认为它简单”不就一个对话框么“,我觉得技术是需要严谨甚至谦卑。手机屏幕是个寸土必争之地,那么既然点进来...

Chain
2013/06/08
3K
1
Android第四十一天(2)

1、对话框的分类 <1>AlertDialog 警告对话框(提示对话框) (1)父类:android.app.Dialog (2)创建AlertDialog对话框的步骤 a.创建AlertDialog.Builder对象,该对象能创建AlertDialog; ...

黄晓磊
2016/07/25
5
0
Android入门-AlertDialog

时隔一年,又要准备做Android的开发了,最近复习和整理一下Android的知识。这次要说的是AlertDialog,这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的...

xyh12344
2015/12/03
57
0
Android入门第九篇之AlertDialog

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 时隔一年,又要准备做Android的开发了,最近复习和整理一下Android的知识。这次要说的是AlertDialog,这种对话框会经常遇到。A...

晨曦之光
2012/03/14
298
0
Android官方推荐使用DialogFragment替换AlertDialog

DialogFragment是在Android3.0(API level 11)中引入的,它代替了已经不建议使用的AlertDialog。 DialogFragment高效地封装和管理对话框的生命周期,并让Fragment和它包含的对话框的状态保持...

u010687392
2015/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
28分钟前
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
40分钟前
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
46分钟前
4
0
composer爆错:zlib_decode():data error

解决办法:先用 composer diagnose 命令检测 然后 composer self-update 更新composer版本 最后执行 composer update 或者 composer install composer 切换阿里云镜像 用起来还快 composer c...

koothon
52分钟前
4
0
shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部