设置
et.setKeyListener(this);实现接口
@Override
public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) {
LogUtil.i("onKeyDown-keyCode-" + keyCode);
if (index <= 8) {
if (keyCode == KeyEvent.KEYCODE_0) {
showInput(0, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_1) {
showInput(1, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_2) {
showInput(2, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_3) {
showInput(3, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_4) {
showInput(4, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_5) {
showInput(5, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_6) {
showInput(6, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_7) {
showInput(7, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_8) {
showInput(8, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_9) {
showInput(9, true);
return true;
} else if (keyCode == KeyEvent.KEYCODE_DEL) {
showInput(-1, false);
return true;
}
return false;
} else {
if (keyCode == KeyEvent.KEYCODE_DEL) {
showInput(-1, false);
return true;
}
}
return false;
}
//--------------------
@Override
public int getInputType() {
return 0;//不能设置成为其余,不然 只能监听到 删除键等 内容输入按键没法监听
}
@Override
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
return false;
}
@Override
public void clearMetaKeyState(View view, Editable content, int states) {
}
控制显示
private void showInput(int value, boolean add) {
if (add) {
list.add(index, value);
((TextView) etParent.getChildAt(index)).setText("" + value);
index++;
} else {
if (index == 0) {
return;
}
index--;
list.remove(index);
((TextView) etParent.getChildAt(index)).setText("");
}
}