Android 自定义Dialog实现(二)

article/2025/11/6 5:10:30

        在之前的文章中介绍了自定Dialog的实现方法之一:https://blog.csdn.net/m0_57487205/article/details/124775019?spm=1001.2014.3001.5501icon-default.png?t=M5H6https://blog.csdn.net/m0_57487205/article/details/124775019?spm=1001.2014.3001.5501      这篇文章记录一下另外一种实现自定义Dialog的方法:

首先创建一个自己的MyDialog类集成Dialog,集成Dialog 之后会爆红,只需要按Alt+insert键快捷插入构造方法即可,然后需要重写onCreate()方法,在onCreate()方法中通过setContentView(R.layout.dialog_layout)方法指定弹窗需要显示的layout布局,布局可以随便自定义:

1、MyDialog代码:

public class MyDialog extends Dialog {public MyDialog(@NonNull Context context, int themeResId) {super(context, themeResId);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog_layout);}}

2:dialog_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="300dp"android:layout_height="200dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"android:background="@drawable/dialog_shape"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="温馨提示"android:textColor="#8276F1"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="16dp"android:text="是否确定删除此文件?"android:textSize="15sp"android:textColor="#ff0000"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/textView" /><Buttonandroid:id="@+id/no"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginLeft="16dp"android:layout_marginBottom="16dp"android:text="取消"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintStart_toStartOf="parent" /><Buttonandroid:id="@+id/yes"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginEnd="16dp"android:layout_marginRight="16dp"android:layout_marginBottom="16dp"android:text="确定"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout>

         编写好布局文件后就可以对一些逻辑进行整理了,类似于Activity,在onCreate()方法中就可以执行findViewById()操作了,接着就是弹窗按钮的点击时间监听,实现链式编程,一定程度上简化了弹窗的调用流程,下面是完整的MyDialog代码:

/*** 自定义dialog*/
public class MyDialog extends Dialog {private Button button_no;private Button button_yes;private String title = "title";private String message = "message";private DialogClickListener listener;/*** 构造器* @param context 上下文对象* @param themeResId 弹窗样式*/public MyDialog(@NonNull Context context, int themeResId) {super(context, themeResId);}/*** 设置弹窗的标题* @param title 标题内容* @return 返回当前弹窗对象实现链式编程*/public MyDialog setTitle(String title) {this.title = title;return this;}/*** 设置弹窗的提示内容* @param message 内容* @return ***/public MyDialog setMessage(String message) {this.message = message;return this;}/*** 设置点击事件监听对象(传入调用者创建的监听对象)* @param listener 监听对象* @return ***/public MyDialog setClickListener(DialogClickListener listener) {this.listener = listener;return this;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog_layout);button_no = findViewById(R.id.no);button_yes = findViewById(R.id.yes);TextView textView_title = findViewById(R.id.textView);TextView textView_message = findViewById(R.id.message);textView_title.setText(title);textView_message.setText(message);initListener();}private void initListener() {button_no.setOnClickListener(view -> {if (null != listener)listener.onNO();//接口回调dismiss();});button_yes.setOnClickListener(view -> {if (null != listener)listener.onYes();//接口回调dismiss();});}public interface DialogClickListener {void onYes();void onNO();}}

    由于在使用弹窗的时候,调用者需要监听用户到底点了弹窗中的哪一些按钮,或者执行了什么操作,所以需要一个弹窗的接口类进行时间的监听(代码已详细说明,比较好).

最后就是弹窗的调用了:

 private void showDialog() {MyDialog myDialog = new MyDialog(this, R.style.dialog);myDialog.setCancelable(false);//返回键不可以关闭弹窗myDialog.setCanceledOnTouchOutside(false);//点击弹窗之外不能关闭弹窗myDialog.setTitle("温馨提示").setMessage("确定要删除这个文件吗?").setClickListener(new MyDialog.DialogClickListener() {@Overridepublic void onYes() {Log.e("Dialog", "点击确定要做的事情在这里写");}@Overridepublic void onNO() {Log.e("Dialog", "点击取消要做的事情在这里写");}}).show();}

这是效果图)

 


http://chatgpt.dhexx.cn/article/rhbo0wl6.shtml

相关文章

Android-自定义Dialog

Android-自定义Dialog 2014年4月27日 星期天 天气晴朗 心情平静 本篇博文来分享一个也是开发中经常需要用到的功能-自定义对话框&#xff0c;这里我用到了Android中的图形资源shape&#xff0c;具体使用方法&#xff0c;各位看代码吧&#xff0c;Android有多钟图形资源&#xf…

Flutter 自定义Dialog

我们项目开发中&#xff0c;有很多地方会用到dialog&#xff0c;虽然flutter自身也有&#xff0c;比如AboutDialog、AlertDialog、SimpleDialog、CupertinoAlertDialog等等之类的&#xff0c;但是这些满足不了我们的控制欲&#xff0c;我们想要的是它可以根据我们的想法而随改变…

安卓自定义dialog弹窗

1.先设置dialog样式&#xff0c;style.xml <!-- dialog样式 --><style name"DialogTheme" parent"android:style/Theme.Dialog"><!-- 边框 --><item name"android:windowFrame">null</item><!-- 是否浮现在act…

Android 自定义Dialog的实现

最新实现了一个自定义Dialog的需求&#xff0c;先看看效果图&#xff1a; 下面说说如何实现&#xff1a; 首先需要自定义一个Dialog类&#xff0c;继承自android.app.Dialog类。这个Dialog类就是要显示的对话框&#xff0c;包含双选按钮和单选按钮两种效果。本例中自定义Custo…

Android自定义Dialog对话框的几种方法(精简版)

自定义对话框是经常使用的功能&#xff0c;我们常用的弹窗操作&#xff0c;除了使用popwindow就是使用dialog来实现&#xff0c;这两种组件都支持之定义布局和功能来满足我们个性化的需求&#xff0c;也可以不采用自定义而直接使用系统封装好的api来实现功能。今天简单总结下在…

自定义Dialog的简单实现

自定义Dialog的详细步骤&#xff08;实现自定义样式一般原理&#xff09; 发表于2016/3/22 22:12:57 1410人阅读 分类&#xff1a; android开发 转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/details/50958659 自定义Dialog的详细步骤&#xff08;实现自定义样…

安卓dialog的使用+如何自定义dialog

吐槽 哇哇哇&#xff0c;刚写一半win10给我蓝屏了&#xff0c;心塞塞&#xff0c;以后写一点保存一点。回到正题&#xff0c;看到产品给我的设计图&#xff0c;有辣么多的自定义的dialog&#xff0c;发现之前自己只会系统自带的dialog&#xff0c;但是这样根本满足不了产品的需…

Android/安卓 自定义Dialog 最简单、最详细解释

看了很多视频&#xff0c;也在网上找了一些浏览量最多的文章&#xff0c;发现都太难懂或者太复杂&#xff0c;夹杂了很多其他功能&#xff0c;自定义度太高&#xff0c;很繁琐。所以我想写一个基础的自定义Dialog&#xff0c;只涉及基础的自定义&#xff0c;其他复杂的自定义可…

自定义Dialog的详细步骤(实现自定义样式一般原理)

转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/details/50958659 自定义Dialog的详细步骤&#xff08;实现自定义样式一般原理&#xff09; 现在很多App的提示对话框都非常有个性&#xff0c;然而你还用系统的对话框样式&#xff0c;是不是觉得很落后呢&#xf…

CSS 文字超出部分显示省略号

一&#xff1a; title { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } 以上 CSS 适用于单行文字超出部分&#xff0c;显示「省略号」。如图&#xff1a; 二&#xff1a; title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-cl…

css三行代码实现多行文字超出部分省略号代替

就是我们在页面开发的时候有时为了更加美观&#xff0c;让文字在同行显示&#xff0c;超出的部分用省略号替代 而这个效果我们直接实现3行css实现 white-space: nowrap; 让文字在一行显示&#xff0c;不允许换行 overflow: hidden; 超出部分隐藏 text-overflow: ellipsis; 超…

IOS不兼容超出部分省略号 且页面显示不起作用 行数限定无作用

IOS不兼容超出部分省略号 且页面显示不起作用 行数限定无作用 换成下面的写法 overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 1;-webkit-box-orient: vertical;

CSS超出部分省略号

1&#xff0c;单行文本实现超出部分省略号 overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 2&#xff0c;多行文本实现超出部分省略号 overflow:hidden; text-overflow:ellipsis; display:-webkit-b…

css文字超出部分省略号代替

问题 之前做过好过网页&#xff0c;其中经常遇到一个常用的知识点&#xff0c;就是当文字超出界面的范围&#xff0c;用省略号代替显示&#xff0c;给网页一美观。 解决方案 1.单行显示省略号&#xff1a; 点击查看代码详情 效果如下: 2.多行显示省略号&#xff1a; 点击…

CSS文字超出部分省略号显示

文章目录[隐藏] CSS 文字超出部分省略号显示前言CSS 文字超出部分省略号显示实现方法CSS 文字超出部分省略号显示实现效果 CSS 文字超出部分省略号显示前言 在我们开发过程中&#xff0c;其实有这样的需求&#xff1a; 在一个文章列表中&#xff0c;文章摘录太长了会影响排版格…

css 文字换行和超出部分省略号

css 文字换行和超出部分省略号 文字空格与换行 当文本溢出父级 block 元素时, 文本会换行; 这个特性是通过 white-space 控制的; 它影响浏览器处理空格, 换行和 tab 的处理; 它有下面几种值 normal, 默认值, 连续的空白符会被合并&#xff0c;换行符会被当作空白符来处理。…

overflow超出部分省略号

实现上图所示样式 单行超市省略号 width: 9rem;overflow: hidden;text-overflow: ellipsis;white-space: nowrap; //单行超出显示省略号可设置多行超出省略 //两行超出.overhide {display: -webkit-box !important;text-overflow: ellipsis;overflow: hidden;-webkit-line-cla…

html字体超出后隐藏省略号,CSS控制文字超出部分省略号显示

一:单行文本显示不完时,我们只需要设置单行文本的宽度,不允许换行,溢出隐藏及换行省略四个属性即可: p{max-width: 100px; overflow:hidden; text-overflow:ellipsis; /*禁止换行显示*/ white-space:nowrap; background-color:#ffe51a; } 哈哈哈哈哈哈哈,哈哈哈哈哈,哈哈…

文本超出部分显示省略号

我们经常在网站上可以看到以下样式&#xff0c;标题太长&#xff0c;一行显示不下&#xff0c;则会使用省略号来代替。但是事实上&#xff0c;这个省略号并不是打字打上去的&#xff0c;而是使用代码表示出来的。 今天则主要介绍如何让文本超出部分显示省略号。 1.单行文本超出…

CSS中 设置( 单行、多行 )超出显示省略号

1. 设置超出显示省略号 css设置超出显示省略号可分两种情况&#xff1a; 单行文本溢出显示省略号…多行文本溢出显示省略号… 但使用的核心代码是一样的&#xff1a;需要先使用 “overflow:hidden;” 来把超出的部分隐藏&#xff0c;然后使用“text-overflow:ellipsis;”当文…