只有在软键盘按下后才会调用onClickListener

时间:2014-01-23 15:50:11

标签: java android keyboard onclicklistener

我写了一个Android应用程序

我设置了editText.setOnClickListener(...)

但是我看到当用户点击时,软键盘才会打开,只有

当用户点击键盘键时 - 调用onClick()

如何在打开软键盘之前抓住点击?

我想避免键盘打开。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.phone_login);
    initMembers();
    setOnClickListeners();
    initFieldsTexts();
    setKeyboardVisibilityListener();
}

private void setOnClickListeners() {

    mPhoneNumberField.setInputTextOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setResult(RESULT_CANCELED);
            finish();
        }
    });

}

public class PhoneLoginFillInField extends LinearLayout {
..
    public void setInputTextOnClickListener(OnClickListener onClickListener)
    {
        mInputText.setOnClickListener(onClickListener);
    }

在调试期间,我看到这行被调用了两次

mPhoneNumberField.setInputTextOnClickListener(new OnClickListener() {

虽然它仅从onCreate调用,但setOnClickListeners();被调用一次

2 个答案:

答案 0 :(得分:1)

你的意思是EditText不应该获得焦点;它只需要响应点击事件。这样做:

editText.setFocusableInTouchMode(false);

然后继续:

editText.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View view) {
       // Your code...
   }
}

答案 1 :(得分:0)

将onTouchListener设置为EditView。请记住返回true以避免事件传播。