Android自定义对话框的简单实现
本文实例为大家分享了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()方法使对话框不显示。(接口回调的方式)
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(),否则对话框不显示。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
看完文章,还可以扫描下面的二维码下载快手极速版领4元红包
除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。
邀请两个好友奖最高196元,如下图所示:







