当前位置:首页 > 谈天说地

Android自定义对话框的简单实现

34资源网2022-07-28447

本文实例为大家分享了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元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/19942.html

分享给朋友:

相关文章

初中生创业可以做什么?适合初中生干的创业项目推荐

初中生创业可以做什么?适合初中生干的创业项目推荐

现如今很多初中生因为家里经济条件不是很好,不得已早早的就辍学创业了。那么,初中生创业可以做什么好呢?很多初中生对于刚开始创业很迷糊,不知道该做什么好,接下来小编就给大家推荐几种适合初中生干的创业项目,想创业挣钱的初中生朋友好好看下吧。…

分享30句用被刺造句的句子

分享30句用被刺造句的句子

1、黄昏已经谢去,夜幕早已铺开。高高的法国梧桐,被刺眼的白色路灯照亮。在黑色的夜空里镶了一圈又一圈攫绿,有时被拂过的夜风飘动,发出轻轻的沙沙声,只那么一阵,就消失在无限的宁静之中。…

微信开放外链,社交想象力有限

微信开放外链,社交想象力有限

编者按:本文来自新熵,创业邦经授权发布,封面图来自摄图网。 作者|古廿 编辑|伊页 网易云音乐上市,丁磊在现场讲了很多的未来,比如元宇宙。但未来是摸不着看不见的,所以愿意放眼未来的人,多半还要立足脚下。 脚下的立足往往来自两个方面:一…

豆瓣直播,谁会买单?

豆瓣直播,谁会买单?

图源:摄图网 编者按:本文来自微信公众号连线Insight(ID:lxinsight),作者:张霏,编辑:李信,创业邦经授权转载 被外界视为低调的豆瓣从不缺关注。 昨晚,#豆瓣已暂停小组回复功能#和#国家网信办依法约谈处罚豆瓣网#双双冲上…

企业资源整合的影响因素(浅谈企业有效资源整合)

企业资源整合的影响因素(浅谈企业有效资源整合)

随着中国经济的高速发展,越来越多的企业已经进入了快速发展阶段,而“资源整合”成为企业在对外扩张时首选的方式之一。很多行业都提出资源整合,甚至是跨行业,这正是得利于其独特的优势。资源整合,是企业运营中各种资源优化、重新配置的过程,是企业跨越式…