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()方法使对话框不显示 。(接口回调的方式)
【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 。
-- 展开阅读全文 --

    推荐阅读