常见的一种方法:

[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. Android中创建倒影效果的工具类

                     一.有时候我们需要创建倒影的效果,我们接触最多的都是图片能够创建倒影,而布局依然可以创建倒影.       二.工具类代码 import android.graphi ...

  2. Map的深浅拷贝的探究

    1. 复制map示例 首先看一个例子,当我使用不同方法将一个源map拷贝到另一个map后,改变源map,复制后的map理应不受影响 import java.math.BigDecimal; impor ...

  3. Linux查看文件安装路径与文件所在路径

    一.查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以Oracle为例.比如说我安装了Oracle,但是不知道文件都安装在哪些地方.放在哪些文件夹里, ...

  4. 神奇的 Block

    本文不做Block的基本介绍和底层实现原理,有兴趣的同学直接戳这篇文章(http://www.jianshu.com/p/51d04b7639f1),写得灰常好,本文只在应用层面上带领读者进行思考,并 ...

  5. HDU 3657 Game (SAP | Dinic | EK 三种算法的比较)

    Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. jQuery UI API - 可拖拽小部件(Draggable Widget)(转)

    所属类别 交互(Interactions) 用法 描述:允许使用鼠标移动元素. 版本新增:1.0 依赖: UI 核心(UI Core) 部件库(Widget Factory) 鼠标交互(Mouse I ...

  7. 安卓listView实现下拉刷新上拉加载滑动仿QQ的删除功能

    大家对这些功能都是看的多了,然后对上拉刷新和下拉加载的原理都是非常清楚的,所以实现这功能其实也就是为了让大家能够从众多的同行们来进行比较学习而已,虽然即使是这样,但是面试的时候面试官还是会问你上拉和下 ...

  8. Mac Apache Maven 配置

    1.配置准备工作 1)配置 Maven 准备工作 下载相关软件 apache-maven-3.5.3.zip Maven 官网 Maven for Mac 配置软件下载地址,密码:q9u3. Mave ...

  9. C++中的Thunk技术 / 非静态类成员函数作为回调函数 的实现方法

    原文:https://blog.twofei.com/616/ 用我的理解通俗地解释一下什么是C++中的Thunk技术吧! Thunk技术就是申请一段可执行的内存, 并通过手动构造CPU指令的形式来生 ...

  10. Openssl aes加解密例程 更进一步

    原文链接: http://blog.csdn.net/itmes/article/details/7718427 前面我们用openssl的aes256对称加密算法对16个字节的内存块进行了的加解密运 ...