当前位置: 首页 > article >正文

自定义Dialog 两种方式

第一种 创建一个MyDialogs

public class MyDialogs extends Dialog {
    private Button confirmButton, cancelButton;
    private EditText editText;


    public MyDialogs(@NonNull Context context) {
        super(context);
       init();
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        // 设置 Dialog 的位置
        Window window = getWindow();
        WindowManager.LayoutParams layoutParams = window.getAttributes();
//        layoutParams.gravity = Gravity.BOTTOM; //TOP弹框最上方
        //设置Dialog的宽度大小
        layoutParams.width = 1200;
        layoutParams.height = 800;
        //背景圆角白色
        window.getDecorView().setBackgroundResource(R.color.transparent);
        window.setAttributes(layoutParams);
    }

    public void init() {
        setContentView(R.layout.new_add_file);
        // 设置点击 Dialog 外部区域不取消 Dialog
        setCanceledOnTouchOutside(false);
        confirmButton = findViewById(R.id.confirm_button);
        cancelButton = findViewById(R.id.cancel_button);
        editText = findViewById(R.id.dialog_input);
        confirmButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String content = editText.getText().toString();
                if (!TextUtils.isEmpty(content)) {
                    String path = "/storage/emulated/0/Download/Filelocatily" + "/" + content;
                    File folder = new File(path);
                    if (!folder.exists()) {
                        folder.mkdirs();
                    }

                } else {
                    Toast.makeText(getContext(), "请输入文件名称", Toast.LENGTH_LONG).show();
                }

                dismiss();
            }
        });

        cancelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
    }
}

Activity  /Fragment 调用方法 

   private MyDialogs myDialogs;
   myDialogs = new MyDialogs(getActivity());

   myDialogs.show();

第二种

public class MyDialogs extends Dialog {

    public MyDialogs(Context context, int layout, int style, int gravity) {
        super(context, style);
        setContentView(layout);
        Window mWindow = getWindow();
        WindowManager.LayoutParams params = mWindow.getAttributes();
        // params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        //背景圆角白色
        mWindow.getDecorView().setBackgroundResource(R.color.transparent);
        params.width = 1100;
        params.gravity = gravity;
        mWindow.setAttributes(params);
    }
}

调用方法

 private MyDialogs myDialogs;

  myDialogs = new MyDialogs(getActivity(), R.layout.new_add_file, 0, Gravity.CENTER);
                myDialogs.show();
                myDialogs.setCanceledOnTouchOutside(false);
                // 设置点击 Dialog 外部区域不取消 Dialog
                Button confirmButton = myDialogs.findViewById(R.id.confirm_button);
                Button cancelButton = myDialogs.findViewById(R.id.cancel_button);
              
                confirmButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                        myDialogs.dismiss();
                    }
                });

                cancelButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        myDialogs.dismiss();
                    }
                });

在页面销毁的时候置空 要不有可能导致内存泄漏

  @Override
    public void onDestroy() {
        super.onDestroy();
        if (myDialogs != null) {
            myDialogs.dismiss();
            myDialogs = null;
        }
    }


http://www.kler.cn/a/299671.html

相关文章:

  • Uniapp基于uni拦截器+Promise的请求函数封装
  • Linux: network: IPv6: ESP: UDP checksum error 一例
  • 你不知道的《回流与重绘》那些事儿
  • 双指针(8)_单调性_四数之和
  • 硅外延片行业分析:未来几年年复合增长率CAGR为5.3%
  • uniapp中scroll-view标签
  • 【Unity3D】如何用MMD4Mecanim插件将pmx格式模型转换为fbx格式模型
  • 分布式通信:多计算平台的任务分配
  • IP包头的总长度字段和UDP包头的长度字段之间的关系
  • 深入掌握Go语言中的正则表达式与字符串处理
  • 概率生成模型(Generative Models)和概率判别模型(Discriminative Models)
  • 什么情况?苹果、谷歌同时败诉
  • 面试—Redis
  • Linux驱动(六):Linux2.6驱动编写之平台设备总线
  • SLMi33x系列SLMi330HCG-DG具有主动保护功能 兼容光耦的单通道带保护功能的隔离驱动器
  • 【mysql】mysql之主从延迟复制测试场景
  • Vue3封装table表格右键菜单功能
  • QQueue调用dequeue闪退解决方法
  • CentOS 7.9安装GCC 7.3.0
  • 四款音频剪辑软件免费使用,你更pick哪一个?