没什么特别的地方,只是自定义弹出一个简单的对话框。
效果图:



首先定义一个布局文件 custom_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="200dp"android:layout_height="wrap_content"android:background="@drawable/stroke"><TextView
        android:id="@+id/dialog_msg"android:layout_width="200dp"android:layout_height="40dp"android:textColor="@color/colorPrimary"android:textSize="18sp"android:text="确认是否发布?"android:layout_gravity="center_horizontal"android:gravity="center_horizontal"android:layout_marginTop="10dp"android:layout_marginBottom="40dp"/><View
        android:layout_width="200dp"android:layout_height="1dp"android:background="@color/colorPrimaryDark"/><LinearLayout
        android:layout_width="200dp"android:layout_height="30dp"android:orientation="horizontal"><TextView
            android:id="@+id/cancel_btn"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:textSize="18sp"android:gravity="center"android:text="取消"/><View
            android:layout_width="1dp"android:layout_height="match_parent"android:background="@color/colorPrimary"/><TextView
            android:id="@+id/yes_btn"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:textSize="18sp"android:gravity="center"android:text="确定"android:textColor="#000"/></LinearLayout></LinearLayout>

创建CustomDialog继承Dialog,需要重写构造方法,这里我们在super()中把Theme写死,避免每次都要传入样式,不过也可以更灵活地把Theme放在构造方法的参数中,每次使用弹窗可引不同的style,也可以把要填充的布局文件放入构造方法的参数中传递进来,不过这样就需要再定义不同的控件响应时间(因为引入不同的布局文件,那么控件类型和ID肯定也会有变化了)
style文件dialog.xml:

<style name="dialog" parent="android:Theme.Dialog"><!--表示控件浮在屏幕上,居中--><item name="android:windowIsFloating">true</item><!--去掉Dialog的标题(因为要使用我们自定义的)--><item name="android:windowNoTitle">true</item><!--Dialog的背景颜色,这里empty的值为#0000,表示透明--><item name="android:windowBackground">@color/empty</item></style>

CustomDialog.java文件:

/*** Created by Commy on 2016/8/23.*/
public abstract class CustomDialog extends Dialog{private Context mContext;private String msg;public CustomDialog(Context context,String msg) {super(context,R.style.dialog);mContext = context;this.msg = msg;/*填充自定义弹窗布局文件*/LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(R.layout.custom_dialog,null);
//        获取提示内容TextView控件:TextView message = (TextView)layout.findViewById(R.id.dialog_msg);message.setText(this.msg);setContentView(layout);bindLayoutClick(layout);this.show();}/*** 设置按钮点击相应:* @param layout*/public void bindLayoutClick(View layout){TextView btn_yes = (TextView)layout.findViewById(R.id.yes_btn),btn_no = (TextView)layout.findViewById(R.id.cancel_btn);btn_yes.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {clickYes();dismiss();}});btn_no.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {clickNo();dismiss();}});}/*定义按钮点击事件:*/public abstract void clickYes();public abstract void clickNo();
}

最后在活动界面就可以定义一个按钮弹窗啦~

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button alertDialog = (Button)findViewById(R.id.alert);alertDialog.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {CustomDialog customDialog = new CustomDialog(MainActivity.this,"这是个弹窗") {@Overridepublic void clickYes() {showToast("点击了positive");}@Overridepublic void clickNo() {showToast("点击了negative");}};}});}public void showToast(String msg){Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();}
}

至此,自定义AlertDialog的步骤就完成了,完整代码:

自定义Alertdialog完整代码,点我~

创建自定义AlertDialog相关推荐

  1. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  2. android datepicker 自定义,android – 如何使用两个datepicker创建自定义对话框?

    最好先阅读 Dialogs和 Pickers. 至于实现,您可以有两个按钮:一个用于显示开始日期的日期选择器,另一个用于显示结束日期. 编辑:如果你真的想在1个对话框中显示2个日期选择器,这里有一个如 ...

  3. Android 自定义AlertDialog类

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

  4. 自定义AlertDialog.Builder对话框

    在工作中,原生态的AlertDialog已经远远不能满足我们工作的需求,这时候,就需要使用自定义的AlertDialog.Builder: 在自定义之前,我们先了解下, **原生态的AlertDial ...

  5. Delta3D———通过游戏管理器组件和消息的扩展创建自定义行为 《转》

    游戏管理器组件给我们提供了在不修改游戏管理器的情况下灵活扩展我们的自定义行为的能力.游戏管理器组件是基于消息来工作的,定义自定义行为的基本 流程就是创建自定义类型的消息,在合适的时候发送消息,创建自定 ...

  6. 小D学blend-----如何创建自定义的Tooltip控件

    运行环境:blend 4.0或者blend 3.0 +silverlight 3.0(其实我相信步骤应该是差不多的) 语言:C# Tooltip类:它是表示一个长方形的小弹出窗口,该窗口在用户将指针悬 ...

  7. 为 ASP.NET Datagrid 创建自定义列

    Marcie Robillard DatagridGirl.com 2003 年 9 月 简介 不得不承认,为 Microsoft® ASP.NET 编写 Datagrid 代码包括大量的重复工作.尽 ...

  8. reddit_如何使用Python创建自定义Reddit通知系统

    reddit by Kelsey Wang 王凯西 如何使用Python创建自定义Reddit通知系统 (How to make a custom Reddit notification system ...

  9. 如何使用Bootstrap4和ES6创建自定义确认框

    by Prashant Yadav 通过Prashant Yadav 如何使用Bootstrap4和ES6创建自定义确认框 (How to create a custom confirm box wi ...

最新文章

  1. java 搭建企业应用框架_溯源微服务开发体系:一位Java开发者的转型思考
  2. plus 什么是mybais_谈谈自己用mybatis-plus中的一些经验。
  3. sqlite3.h:没有那个文件或目录
  4. red hat 5.3补丁_您如何解释组织的宗旨? 来自Red Hat的3课
  5. 经济学专业向计算机方向创业,基于市场需求的经济学专业人才培养模式研究
  6. python怎么编辑文件_关于python:如何在Google Colab中编辑和保存文本文件(.py)?
  7. linux清除asm磁盘分区,ASM Diskgroup添加与删除
  8. Hexo为文章设置目录与标签的方法
  9. linux 文件系统简介
  10. 电影图标:杀死比尔(Kil Bill)
  11. 多传感器融合方法综述
  12. oracle cube,oracle rollup和cube分析
  13. qevent 事件的accept()和ignore()
  14. supervisor原理及如何使用
  15. 数据治理:认识数据治理
  16. Sprite 从PS切图到具体实现完整过程
  17. Naive Deco Sans手写不规则线条字体 for mac
  18. 2012年1月微软MVP申请开始!
  19. html 屏幕垂直居中显示,页面内容居中设置(水平居中与垂直居中)
  20. pcs for linux7下载,BaiduPCS-Go

热门文章

  1. 一起撸个环形 Android 图表
  2. echarts常用例图之《环形饼图》
  3. 弘辽科技:淘宝店铺为什么会突然关闭?封店原因有哪些?
  4. Android bitmap裁剪任意形状为透明的png图片
  5. 网络红人“犀利哥”受聘广东顺德当时装模特
  6. 机器学习可解释性【随机森林规则提取】
  7. AutoJs学习-实现度娘传情
  8. js 遍历 JSON数据
  9. 计算机组成原理:cache命中率、平均访问时间、效率公式(精简)
  10. java计算机毕业设计恒美服饰原材料采购预约配送系统源码+mysql数据库+系统+lw文档+部署