本文实例为大家分享了android自定义对话框的具体实现代码,供大家参考,具体内容如下
1、定义对话框的布局
<?xml version="1.0" encoding="utf-8"?><relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <textview android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textsize="16sp" android:layout_margin="4dp" android:text="标题"/> <textview android:id="@+id/content1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textsize="14sp" android:text="第一行文字" android:layout_margin="4dp" android:layout_below="@id/title" android:gravity="center"/> <textview android:id="@+id/content2" android:layout_width="match_parent" android:layout_height="wrap_content" android:textsize="14sp" android:text="第一行文字" android:layout_margin="4dp" android:layout_below="@id/content1" android:gravity="center"/> <linearlayout android:id="@+id/linear" android:layout_below="@id/content2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_margintop="6dp" android:paddingright="20dp" android:paddingleft="20dp" > <button android:id="@+id/ok" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textsize="14sp" android:text="确定"/> <button android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textsize="14sp" android:text="取消"/> </linearlayout> <button android:id="@+id/know" android:layout_below="@id/linear" android:gravity="center" android:layout_margintop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textsize="14sp" android:text="知道了"/></relativelayout>对话框样式(比较丑哈,就是大概这个意思,嘿嘿)
2、定义接口
利用接口回调的方式使对话框消失 。
public interface dialoglistener { void onclick(mydialog dialog,view view);}3、写一个类继承dialog,并重写构造方法
说明:第三个按钮的监听与其他两个不同,前两个使用的是button原声的监听事件,第三个为自定义的接口,目的是获取mydialog,然后通过dismiss()方法使对话框不显示 。(接口回调的方式)
【Android自定义对话框的简单实现】public class mydialog extends dialog { private textview mtiponeview; private textview mtiptwoview; private textview mtitleview; private button mokview; private button mcancelview; private button mkonwview; private view.onclicklistener moklistener; private view.onclicklistener mcancellistener; private dialoglistener mknowlistener; private string title; private string onetip; private string twotip; private void setondialoglistener(dialoglistener listener){ this.mknowlistener = listener; } public mydialog(context context) { super(context); } public mydialog(context context,string title,string onetip,string twotip,view.onclicklistener ok,view.onclicklistener cancel,dialoglistener know) { this(context); this.title = title; this.onetip = onetip; this.twotip = twotip; moklistener = ok; mcancellistener = cancel; mknowlistener = know; } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.layout_dialog); mcancelview = (button) findviewbyid(r.id.cancel); mokview = (button) findviewbyid(r.id.ok); mkonwview = (button) findviewbyid(r.id.know); mtiponeview = (textview) findviewbyid(r.id.content1); mtiptwoview = (textview) findviewbyid(r.id.content2); mtitleview = (textview) findviewbyid(r.id.title); mtitleview.settext(title); mtiptwoview.settext(twotip); mtiponeview.settext(onetip); mcancelview.setonclicklistener(mcancellistener); mokview.setonclicklistener(moklistener); mkonwview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { mknowlistener.onclick(mydialog.this,view); } }); }}通过setviewcontent(r.layout.~)为对话框设置样式;使用构造方法传值 。
4、显示对话框
public class customdialogactivity extends appcompatactivity { private dialoglistener listener; private mydialog mydialog; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_custom_dialog); listener = new dialoglistener() { @override public void onclick(mydialog dialog, view view) { mydialog.dismiss(); } }; } public void showdialog(view view){ mydialog = new mydialog(customdialogactivity.this, "不知道", "有问题么", "啥问题", new view.onclicklistener() { @override public void onclick(view view) { log.e("----->", "ok"); //点击按钮发生的事件 } }, new view.onclicklistener() { @override public void onclick(view view) { log.e("----->", "cancle"); //点击按钮发生的事件 } },listener); mydialog.show(); }}注意:一定不要忘了show(),否则对话框不显示 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com 。
-- 展开阅读全文 --
推荐阅读
- ai怎么做九宫格照片效果? ai九宫格分割图片的技巧
- ai怎么设计朝花夕拾的艺术字体? ai字体设计创意教程
- 父亲节快乐创意字体怎么设计? ai手绘父亲节文字的技巧
- ai怎么设计时空错乱字体? ai制作矛盾空间字体步骤
- photoshop做剪纸风格艺术字? ps碎片化剪纸艺术字体设计技巧
- flash怎么把形状变成文字? flash星星变文字动画的实现方法
- cad x命令炸开图纸怎么恢复? cad炸开命令的详细使用教程
- flash怎么画雪景素材? flash绘制一个森林雪景矢量背景图的技巧
- 3DMax如何让模型呈现透明度?3DMax让模型呈现透明度的方法