setOnKeyListener在对话框中不起作用

时间:2015-12-09 07:34:58

标签: android dialog android-edittext alertdialog

对话框中的EditText的setOnKeyListner不起作用。

ParameterDialog有一个edittext,因为我们不能输入空格。所以我将setOnKeyListener实现为edittext,但我仍然可以输入空格。

那么如何在除了setOnKeyListner()??

之外的edittext中输入密钥
public void parameterDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final TextInputLayout tnlAddParameter = new TextInputLayout(this);
    final EditText etAddParameter = new EditText(this);
    etAddParameter.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

    etAddParameter.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            Toast.makeText(getBaseContext(),""+keyCode,Toast.LENGTH_SHORT).show();
            if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE) {
                return true;
            }
            return false;
        }
    });
    tnlAddParameter.addView(etAddParameter);
    builder.setView(tnlAddParameter);
    builder.setTitle(R.string.title_add_parameter)
            .setPositiveButton(R.string.add_template,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            String param = etAddParameter.getText().toString().trim();
                        }
                    })

            .setNegativeButton(R.string.cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User cancelled the dialog
                            dialog.dismiss();
                        }
                    });
    // create alert dialog
    final AlertDialog alertDialog = builder.create();
    // show it
    alertDialog.show();
    // Text change listener to enable/disable Proceed button.
}

1 个答案:

答案 0 :(得分:0)

试试这个。 Dunno是否适合您的需要尝试。 它在android中使用文本更改侦听器。

        etAddParameter.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {


                validate(s.toString());
            }
        });
    }

    private void validate(String s) {

        if (s.contains(" "))
        {
            etAddParameter.setError("Text should not contain space");
        int length = etAddParameter.getText().length();
        if (length > 0) {
            etAddParameter.getText().delete(length - 1, length);
        }
        }
    }