Dialog设置为点击空白处/点击按钮后 不消失

private void showNoticeDialog() {
        UtilsTools.Log_e(TAG, "-----showNoticeDialog");
        try {
            AlertDialog.Builder mDialog = new AlertDialog.Builder(mContext);
            mDialog.setTitle(" 发现新版本啦! \n 请前往更新享受更好的体验。").setPositiveButton("前往更新", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    UtilsTools.Log_e(TAG, "to update --- url --- " + updateUrl);
                    Field field = null;
                    try { // 这一块是点击按钮后不消失
                        field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                        field.setAccessible(true);
                        field.set(dialog, false);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            // 点击空白处是否消失 1-不消失 0-不消失
            if (is_forced_update.equals("1")) {
                mDialog.setCancelable(false);
            } else {
                mDialog.setCancelable(true);
            }
            mDialog.create().show();
        } catch (Exception e) {

        }
    }

设置点击按钮不可消失后,如果要改为点击按钮消失,改为:

field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                        field.setAccessible(true);
                        field.set(dialog, true);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android或iOS等平台的用户界面设计中,当用户点击对话框中的某个区域时,通常需要处理点击监听事件。这种监听通常涉及到以下几个步骤: 1. **设置监听器**:在相应的View(如按钮、文本框或自定义布局)上设置OnClickListener或类似类型的事件处理器,这可以是Java或Kotlin的匿名内部类,也可以是一个实现了OnClickListener接口的类。 ```java button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 当按钮被点击时执行的代码 Toast.makeText(context, "Button clicked!", Toast.LENGTH_SHORT).show(); } }); ``` 2. **重写方法**:如果是在继承自View或其子类的自定义控件中,可能需要重写`onTouchEvent()`方法来处理点击事件,因为`onClick()`只在点击视图的焦点区域有效。 ```kotlin class CustomDialog : DialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.custom_dialog, container, false) view.findViewById<Button>(R.id.button_id).setOnClickListener { // 点击事件处理 } return view } } ``` 3. **事件处理**:在`onClick()`或`onTouchEvent()`的回调里,你可以获取到用户点击的具体位置,执行相应的操作,比如更新UI、显示信息、导航等。 ```java @Override public void onClick(View v) { int position = (int) v.getId(); // 获取点击的View ID switch (position) { case R.id.button1: // 处理第一个按钮的点击 break; case R.id.button2: // 处理第二个按钮的点击 break; // ... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值