我正在尝试使用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");
你知道某种解决方案吗?
答案 0 :(得分:1)
让我试着让自己明白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以获取示例代码。