常见的一种方法:

[html] view plaincopyprint?

  1. AlertDialog.Builder builder;

  2. AlertDialog alertDialog;

  3. LayoutInflater inflater = getLayoutInflater();

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

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

  6. R.layout.dialog, null);

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

  8. // 添加点击事件

  9. text.setOnClickListener(new OnClickListener() {

  10. @Override

  11. public void onClick(View v) {

  12. // TODO Auto-generated method stub

  13. text.setText("call");

  14. }

  15. });

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

  17. alertDialog = builder.create();

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

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

  20. alertDialog.show();

  21. // 修改大小

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

  23. .getAttributes();

  24. params.width = 350;

  25. params.height = 200;

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

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

重写AlertDialog类,定义方法:

[html] view plaincopyprint?

  1. /**

  2. * 自定义的对话框

  3. */

  4. public abstract class MyAlerDialog extends AlertDialog implements

  5. android.view.View.OnClickListener {

  6. protected MyAlerDialog(Context context) {

  7. super(context);

  8. // TODO Auto-generated constructor stub

  9. }

  10. /**

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

  12. */

  13. private TextView txt;

  14. @Override

  15. protected void onCreate(Bundle savedInstanceState) {

  16. // TODO Auto-generated method stub

  17. super.onCreate(savedInstanceState);

  18. // 加载自定义布局

  19. setContentView(R.layout.dialog);

  20. // setDialogSize(300, 200);

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

  22. txt.setOnClickListener(this);

  23. }

  24. /**

  25. * 修改 框体大小

  26. *

  27. * @param width

  28. * @param height

  29. */

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

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

  32. params.width = 350;

  33. params.height = 200;

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

  35. }

  36. public abstract void clickCallBack();

  37. /**

  38. * 点击事件

  39. */

  40. @Override

  41. public void onClick(View v) {

  42. // TODO Auto-generated method stub

  43. if (v == txt) {

  44. clickCallBack();

  45. }

  46. }

  47. }

在活动中使用:

[html] view plaincopyprint?

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

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

Android自定义AlertDialog相关推荐

  1. Android自定义AlertDialog的控件获取操作

    Android自定义AlertDialog的控件获取操作 在自定义的AlertDialog布局虽然可以显示,但是试过很多方法都不能获得其中的控件进行操作,找了很多方法最后这种方法可以. dialog的 ...

  2. android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据

    **主要实现功能:** 1.从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中 2.将AlertDialog的EditText中的值设置 ...

  3. Android 自定义AlertDialog对话框

    2019独角兽企业重金招聘Python工程师标准>>> 系统默认的AlertDialog,与项目的UI不统一,所以,改了一下,定义了一样式,最终效果如下图: 另外,为了尽量少改原来的 ...

  4. Android 自定义AlertDialog类

    还是先从最简单的开始吧,然后一步一步的扩展. 为了保证软件上所谓的低耦合度和可重用性,这里不得不需要单独建立一个类CustomerDialog,然后继承AlertDialog public class ...

  5. Android 自定义AlertDialog

    Android 自定义popuWindow 对于项目需求中,系统的弹出框不能满足我们的需求,就只能通过自定义布局来实现自己相对应的功能,这里总结一篇关于AlertDialog的 具体操作 这里把弹出框 ...

  6. Android 自定义AlertDialog,调用方法与系统一致

    2019独角兽企业重金招聘Python工程师标准>>> 由于android原生的AlertDialog都一致,有时为了和你的项目的Dialog保持一致,你最先想到的就是有没有Aler ...

  7. android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...

    1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...

  8. android+自定义alertdialog,安卓自定义AlertDialog

    AlertDialog.png 使用方法 example: DialogUtil.showAlertDialog(getActivity(), R.mipmap.restart, "退出提示 ...

  9. Android 自定义AlertDialog(退出提示框)

    有时候我们需要在游戏或应用中用一些符合我们样式的提示框(AlertDialog) 以下是我在开发一个小游戏中总结出来的.希望对大家有用. 先上效果图: 下面是用到的背景图或按钮的图片 经过查找资料和参 ...

最新文章

  1. ASP.NET 2.0 页面编译方式
  2. Electric shaver and clean: workable when power is low
  3. 一分钟带你快速进入Nacos的世界,史上最简易教程!零基础也能看明白!谁反对?
  4. jwt:介绍以及创建token
  5. 比那 施氏食狮史 还要强的文章
  6. linux卸载emc硬盘,关于EMC symmetrix新分磁盘在Linux主机无法fdisk? 求助
  7. 搞定问题描述的5W2H法是什么
  8. 测试了几款mysql监控工具
  9. C语言 C语言知识点总结(思维导图版)
  10. Linux的NFS(net file systen)
  11. 深入探讨apply()方法的作用
  12. 总结:硬盘随机读写与顺序读写的性能差异
  13. python读取163邮件内容_python 3.x 163邮箱登陆,邮件读取
  14. 关于ListView的优化
  15. 伟东云学堂—几何画板学习
  16. 事务四大特性(ACID)原子性、一致性、隔离性、持久性
  17. 使用poi来导入具有合并单元格的excel表格
  18. 牛顿法迭代法 | matlab实现
  19. A component required a bean of type ‘com.lw.mapper.StudentMapper‘ that could not be found.
  20. align-content 和align-items的区别

热门文章

  1. Matlab/Eigen矩阵填充问题
  2. 大气辐射示意简单图_手绘地理 | 分步骤图解大气受热过程及应用
  3. zabbix部署-版本3.2.6
  4. 面试题:sql数据查询
  5. Tornado,了解一下
  6. 极路由2 root及校园802.1x拨号经验帖(西南校园)
  7. DedeCms织梦彩色标签云(tag)随机颜色和字体大小
  8. 在iPhone应用中使用自定义字体
  9. 感恩被救赎——爱是恒久忍耐
  10. SSH与SSM的区别以及相关技术的流行度