EditText点击两次才能响应Onclick

EditText第一次点击会获取焦点,第二次才会触发点击事件。 

可以通过以下变通方法:


abstract class DialogClickFocusListener implements View.OnFocusChangeListener, View.OnClickListener, DialogInterface.OnDismissListener {

        private boolean mHandled = false;


        public void onClick(View v) {

            if (!mHandled) {

                handleAsClick();

                mHandled = true;

            }

        }


        public void onDismiss(DialogInterface dialog) {

            mHandled = false;

        }


        public void onFocusChange(View v, boolean hasFocus) {

            if (hasFocus) {

                if (!mHandled) {

                    handleAsClick();

                    mHandled = true;

                }

            }

        }

      public  abstract void handleAsClick();

    } 


使用方法:

DialogClickFocusListener oneClickFocus =  new DialogClickFocusListener(){

                public void handleAsClick() { 

                     // show a dialog

              }

            };

EditText oneEditText = null;//  find a EditText

oneEditText.setOnClickListener(oneClickFocus);

oneEditText.setOnFocusChangeListener(oneClickFocus);


触发后我们往往希望可以弹出一个Dialog,那么你的Dialog需要将DialogClickFocusListeners设置为OnDismissListener:

AlertDialog dialog= null;// create a dialog

        dialog.setOnDismissListener(oneClickFocus);

        dialog.show();

相关文章
相关标签/搜索