对话框中的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.
}
答案 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);
}
}
}