OnClick事件仅在edittext上第二次运行

Rob*_*met 53 android

我有一个edittext,当用户点击这个edittext时,我想显示一个alertdialog.
我的代码如下:

            edt.setInputType(InputType.TYPE_NULL);
            edt.setFocusableInTouchMode(true);
            edt.requestFocus();

            edt.setCursorVisible(false);

            edt.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    CommentDialog.buildDialog(mContext, identifier, false, edt.getId());
                }
            });
Run Code Online (Sandbox Code Playgroud)

我不希望在用户单击edittext时显示键盘,因此我将inputtype设置为TYPE_NULL.
但是当edittext没有焦点并且我单击它时,onClick事件不会被执行.当我再次单击它时,alertdialog会正确显示.

我该如何解决?

Sim*_*iak 120

只需尝试将其添加到您的XML文件中即可.widget获得焦点时,键盘会弹出.因此,要防止此行为设置为焦点false.然后正常使用OnClickListener.

<EditText
  android:focusable="false"
  ...
/>
Run Code Online (Sandbox Code Playgroud)

现在,它应该工作.

  • 适用于单击,但键盘未打开,单击时字段未聚焦.. (4认同)

Car*_*nal 24

您可以使用onTouch而不是onClick,因此无论EditText焦点与否都无关紧要.

edt.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) { 
        CommentDialog.buildDialog(mContext, identifier, false, edt.getId());                    
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)


rag*_*pra 6

你没必要做什么

edt.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)


nea*_*aze 6

如果focusableInTouchMode为true,则仅在第二次触摸时触发触摸,因此除非您希望该情况,否则对focusableInTouchMode使用false.如果要在视图集中启用可聚焦性,请设置为focusable true

<EditText android:focusable="true"  android:focusableInTouchMode="false" ... />
Run Code Online (Sandbox Code Playgroud)


Ash*_*ani 5

让你的警告对话框框出现在

setOnFocusChangedListener()