我有一个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)
现在,它应该工作.
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)
如果focusableInTouchMode为true,则仅在第二次触摸时触发触摸,因此除非您希望该情况,否则对focusableInTouchMode使用false.如果要在视图集中启用可聚焦性,请设置为focusable true
<EditText android:focusable="true" android:focusableInTouchMode="false" ... />
Run Code Online (Sandbox Code Playgroud)