常见的一种方法:

[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退出对话框 转 https://blog.csdn.net/wkh11/article/details/53081634在项目中很多时候会出现点击返回键出现 ...

  2. Android 自定义AlertDialog的实现

    Android默认的AlertDialog太单调,我们可以通过继承原生的Dialog来实现自定义的Dialog. 本文的自定义Dialog和原生的AlertDialog的创建方式类似,通过一个静态Bu ...

  3. android 自定义AlertDialog(一段)

    java: final AlertDialog dialog = new AlertDialog.Builder(mContext) .create(); dialog.setCancelable(f ...

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

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

  5. Android 自定义AlertDialog的写法和弹出软键盘和覆盖状态栏

    private void showMyDialog(int layoutId){ AlertDialog myDialog = new AlertDialog.Builder(context).cre ...

  6. android 自定义alertdialog和取消dialog

    看代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle ...

  7. android 自定义AlertDialog

    xml: alter_dialog_two <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  8. Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)

    我们知道,在很多时候,我们都不用Android内置的一些控件,而是自己自定义一些自己想要的控件,这样显得界面更美观. 今天主要是讲自定义AlertDialog和popupWindow的使用,在很多需求 ...

  9. Xamarin.Android 记事本(二)自定义AlertDialog

    导读 1.自定义一个AlertDialog 2.添加一条数据 正文 记事本应当有一个添加功能,这里我打算在右上角放一个item,然后点击这个item弹出一个对话框,输入名称,点击确定跳转到另一个act ...

随机推荐

  1. Nginx 日志改成 JSON 格式

    Nginx 日志默认为普通文本的格式,例如,下面是 Nginx 的一行访问日志: 10.88.122.105 - - [02/Dec/2017:09:15:04 +0800] "GET /j ...

  2. firefox插件卸载

    1.根据插件名进行搜索,搜索到相关dll后删除,重启firefox. 2.about:config--plugin.expose_full_path:true,然后about:plugins去查看插件 ...

  3. Xshell连接Ubuntu失败问题

    转自:https://www.linuxidc.com/Linux/2017-08/146222.htm Xshell是一个安全终端模拟软件,可以进行远程登录.我使用XShell的主要目的是在Wind ...

  4. 【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现

    在项目开发中,通常我们都会涉及到用户登录才能访问的网页,比如购物网站,我们浏览商品,添加购物车(以前开发的时候在这里就需要登录用户,但是现在有了缓存的实现,这里可以将商品加入缓存,等到结账的时候再登录 ...

  5. Unix考古记:一个“遗失”的shell

    谨以此文纪念伟大的计算机科学巨匠Ken Thompson和Dennis Ritchie,并同时向其他所有为Unix发展做出贡献的黑客致敬. 历史的尘埃 Unix作为一个举世闻名的操作系统已有40余年的 ...

  6. python开发者框架套件总结: package 包 frameworks

    python开发者的package 包 框架套件总结: frameworks     开发环境: anaconda pycharm django awesome-django : 介绍 django ...

  7. vc2010 属性值无效 灾难性故障 解决方法

    原文链接: http://blog.csdn.net/enterlly/article/details/8739281 说明: 我遇到这个问题是这样的,在为某个类添加消息时出现的.因为该类不在此工程的 ...

  8. SharePoint 2013混合模式登陆中 使用 自定义登陆页

    接前一篇博客<SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用>,当实现混合模式登陆后,接着我们就 ...

  9. Linux下Socket网络编程

    什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程, ...

  10. [转]学习笔记_springmvc注解形式的开发参数接收

    springmvc基于注解的开发 注解第一个例子 1. 创建web项目 2. 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- sprimgmvc 注解驱动 --> &l ...