我正在尝试开发一个具有EditText(仅允许int)和KeyEvent的小部件。问题是当按下“ 0”时,它检测到KeyEvent,但没有在我的EditText上写入“ 0”。它应该加上数字,以便我按它们。
et1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (KeyEvent.ACTION_UP != event.getAction()) {
switch (keyCode) {
case KeyEvent.KEYCODE_0:
//Do something...
break;
default:
return false;
}
}
return true;
}
});
我已经尝试做类似的事情,但是效率不高。
et1.setText(et1.getText().toString + "0");
您知道某种解决方案吗?
最佳答案
让我尝试让自己清楚一点:Pep:
1)如果您要实现的是具有仅允许整数(数字)输入的EditText
,则可以添加一个属性并且仅此。您不需要针对该行为的自定义控件。
android:inputType="number"
2)之所以没有在
EditText
中获得任何输入,仅仅是因为您通过在覆盖的true
方法中返回onKey
来阻止它。ref说,
onKey
应该返回:如果侦听器已消耗事件,则为true,否则为false。
这意味着,如果您要返回
true
,则由您负责,Android不会在您的EditText
中输入任何内容。由于您自己(至少在提供的代码中)没有执行此操作,因此不会填充EditText。因此,我建议您应该像以前一样完全删除处理程序,并在
inputType
中添加xml
属性。更新资料
如果您需要根据另一个输入(EditText2)的输入来更新
EditText
(我们将其称为EditText1),建议您使用TextWatcher
跟踪第一个输入中的输入,并使用处理后的值设置text
EditText2 。检查this similar issue以获取示例代码。