Android系统对话框——自定义关闭

样式不是重点,我们点击Button以后,Dialog就会自动关闭,像这样:

GIF1

但是有的情况,我们是想要点击完Button以后和我们一些交互的,不要立即关闭,我们想要自定义关闭,像这样:

GIF2

下面进入正题了

自定义关闭


原生的使用方法,就不再介绍了,可以参照以前的文章:[Android系统对话框

]( )

**思路:**原理很简单,我们创建Dialog的时候,可以给Dialog设置标题,内容,以及按钮,像 PositiveButton 等等。

我们以 PositiveButton 举例,我们想要点击 PositiveButton 以后不自动关闭,那我们自定义它的点击事件就好了。

在自定义之前,要首先保证我们添加了 PositiveButton,不然我们在获取 PositiveButton 的时候会报空指针,下面直接上代码

自定义Dialog


package com.kongqw.myapplication;



import android.content.Context;

import android.support.v7.app.AlertDialog;

import android.text.TextUtils;

import android.view.View;

import android.widget.AutoCompleteTextView;

import android.widget.Button;

import android.widget.Toast;



/**

 * Created by kqw on 2016/4/14.

 * 自定义Dialog

 */

public class MyDialog extends AlertDialog.Builder {



    private AlertDialog mDialog;

    private AutoCompleteTextView mAutoCompleteTextView;

    // private DialogOnClickListener mDialogOnClickListener;



    public MyDialog(Context context) {

        super(context);

        // changeUserNameTool = new ChangeUserNameTool(context);

        initDialog(context);

    }



    private void initDialog(Context context) {



        View viewChangeUser = View.inflate(context, R.layout.view_mydialog, null);

        mAutoCompleteTextView = (AutoCompleteTextView) viewChangeUser.findViewById(R.id.autoCompleteTextView);



        setTitle("自定义Dialog");

        setView(viewChangeUser);

        setPositiveButton("确定", null);

        setNegativeButton("取消", null);

        mDialog = create();

        mDialog.show();

        // 自定义Positive按钮 实现点击以后不自定隐藏Dialog

        setPositiveButton();

    }



    /**

     * 在我们重新自定义PositiveButton的点击事件的时候,一定要保证之前添加了 PositiveButton

     * 就是 setPositiveButton("确定", null);

     * 不然下面的 getButton(AlertDialog.BUTTON_POSITIVE); 会报空指针

     */

    public void setPositiveButton() {

        Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);

        positiveButton.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                // 测试

                if (TextUtils.isEmpty(mAutoCompleteTextView.getText().toString())) {

                    mAutoCompleteTextView.setError("密码不能为空");

                } else {

                    Toast.makeText(getContext().getApplicationContext(), "修改成功", Toast.LENGTH_SHORT).show();

                    mDialog.dismiss();

                }

            }

        });

    }



//    public void setDialogOnClickListener(DialogOnClickListener listener) {

//        mDialogOnClickListener = listener;

//    }



}

View(参考)


<?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="wrap_content"

    android:orientation="horizontal">



    <android.support.design.widget.TextInputLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content">



        <AutoCompleteTextView

            android:id="@+id/autoCompleteTextView"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_margin="@dimen/x45"

            android:hint="修改密码" />



    </android.support.design.widget.TextInputLayout>

</RelativeLayout>

使用(参考)


public void myDialog(View view) {

    new MyDialog(this);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值