当前位置:首页 > 谈天说地 > 正文内容

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

34资源网2022年07月28日 11:01282

本文实例为大家分享了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(),否则对话框不显示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

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

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

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

分享给朋友:

相关文章

分享二十句毕业告别的经典语录
分享二十句毕业告别的经典语录

1、曾经拼命想逃离的世界,却又在往后的日子里,念念不忘。2、今天毕业了,再也不能逃课了。3、人生何处不相逢。4、昨日的青空 随少年挥手消失在人海之中。5、时间是让人猝不及防的东西。6、开始于xxxx年初秋,结束于xxxx年盛夏。7、我的生命...

互联网公司好日子到头,逻辑彻底变了
互联网公司好日子到头,逻辑彻底变了

好日子到头了,逻辑彻底变了,互联网公司已经不再是香饽饽。有两个重要的信号。一是资本不能无序扩张;二是互联网平台税率上调;前者直接宣布现在的那些玩家,你们继续玩,这没关系。但是想要通过资本野蛮扩大,不公平竞争,这就甭想了。后者直接影响到了互联...

融资丨「大湾生物」完成近千万美元A轮融资,比邻星创投及高瓴创投共同领投
融资丨「大湾生物」完成近千万美元A轮融资,比邻星创投及高瓴创投共同领投

创业邦获悉,近日,大湾生物有限公司(以下简称:大湾生物)宣布完成近千万美元A轮融资,由比邻星创投与高瓴创投共同领投,阿隆资本跟投以及阿里巴巴香港创业者基金等现有投资者追加投资。本轮融资将加快大湾生物全球创新的三大人工智能平台,分别是智能化...

怎么用电脑开wifi热点(笔记本电脑连接wifi教程)

很多的时候我们手里不会随时准备着路由器,所以经常会导致手机等移动设备缺乏wifi使用。其实,一根网线、一台Win10笔记本就能轻松设置Wifi共享,并且借助Win10自带的移动Wifi热点就能轻松实现Wifi共享,提供给其他笔记本或手机、...

扫地机器人市场的2021:后浪翻涌,前浪头疼
扫地机器人市场的2021:后浪翻涌,前浪头疼

编者按:本文来自锋见,创业邦经授权发布。 转眼2021年已接近尾声,2022年即将来临。回顾过去这一年,注定是不平凡的一年,特别是对于扫地机器人行业来说,2021年发生了不少大事,对行业影响深远。今天我们就来盘点和点评一下。 科技改变生活...

驱动程序包是什么(驱动器c盘空间不足清理步骤)
驱动程序包是什么(驱动器c盘空间不足清理步骤)

本篇文章给大家讲的是如何给自己的电脑安装正确的驱动程序。看到第一句话,很多人可能会说,装驱动这么简单的东西还要用人教吗?装完电脑后下载一个鲁大师或者驱动精灵安装不就行了?而且还能给电脑打打补丁。如果你这样认为,请认真看完本篇文章。...