Android

您所在的位置:网站首页 android自定义弹出框 Android

Android

2023-07-18 09:58| 来源: 网络整理| 查看: 265

一 前言

自定义弹窗在Android应用中十分常见,功能简单直接。

二 目录 创建Dialog布局创建Dialog实现类在其他活动中使用该弹窗 三 实现 1.创建Dialog布局

我们应先创建Dialog的布局文件,在res目录中的layout目录创建dialog.xml文件。布局文件内容自行定义。

2.创建Dialog实现类

实现类有几个关键核心,第一点是为设置的按钮实现监听事件,第二点是重写其显示风格方式。

style风格:

@android:color/transparent true true true public class ImageBottomDialog extends Dialog { private TextView textPhone; private TextView textPicture; private TextView textCancel; private onPhoneOnclickListener onPhoneOnclickListener; private onPictureOnclickListener onPictureOnclickListener; private onCancelOnclickListener onCancelOnclickListener; public ImageBottomDialog(@NonNull Context context) { super(context, R.style.Dialog_Msg); } public void setOnPictureOnclickListener(ImageBottomDialog.onPictureOnclickListener onPictureOnclickListener) { this.onPictureOnclickListener = onPictureOnclickListener; } public void setOnPhoneOnclickListener(ImageBottomDialog.onPhoneOnclickListener onPhoneOnclickListener) { this.onPhoneOnclickListener = onPhoneOnclickListener; } public void setOnCancelOnclickListener(ImageBottomDialog.onCancelOnclickListener onCancelOnclickListener) { this.onCancelOnclickListener = onCancelOnclickListener; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_personalinformation_bottom); //按空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 initView(); //初始化界面数据 initData(); //初始化界面控件的事件 initEvent(); } private void initEvent() { textPhone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onPhoneOnclickListener!=null){ onPhoneOnclickListener.onPhoneClick(); } } }); textPicture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onPictureOnclickListener!=null){ onPictureOnclickListener.onPictureClick(); } } }); textCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCancelOnclickListener.onCancelClick(); } }); } private void initData() { } private void initView() { textPhone = findViewById(R.id.person_dialog_phone); textPicture = findViewById(R.id.person_dialog_picture); textCancel = findViewById(R.id.person_dialog_cancel); } public interface onPhoneOnclickListener { void onPhoneClick(); } public interface onPictureOnclickListener { void onPictureClick(); } public interface onCancelOnclickListener { void onCancelClick(); } @Override public void show() { super.show(); } } 3.使用 final ImageBottomDialog imageBottomDialog = new ImageBottomDialog(this); imageBottomDialog.setOnPictureOnclickListener(new ImageBottomDialog.onPictureOnclickListener() { @Override public void onPictureClick() { //此处添加要执行的方法 } }); imageBottomDialog.setOnCancelOnclickListener(new ImageBottomDialog.onCancelOnclickListener() { @Override public void onCancelClick() { imageBottomDialog.dismiss(); } }); imageBottomDialog.setOnPhoneOnclickListener(new ImageBottomDialog.onPhoneOnclickListener() { @Override public void onPhoneClick() { //此处添加要执行的方法 } }); imageBottomDialog.show(); Window window = imageBottomDialog.getWindow(); window.setGravity(Gravity.BOTTOM); window.setWindowAnimations(R.style.popupAnimation); imageBottomDialog.setCanceledOnTouchOutside(true); imageBottomDialog.setCancelable(true);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3