我有4个编辑文本:oct1,oct2,oct3,oct4。这些编辑文本是numberDecimal类型。我最初关注的是oct1。我需要它,所以当用户按下. (数字垫点),它将而不是进入.的oct,清除焦点和焦点上的下一个编辑文本。
这应该是容易的,但令我惊讶的是令人沮丧。这就是我尝试过的。
覆盖onKeyDown。这甚至不会产生原木。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_NUMPAD_DOT){
oct3.clearFocus();
oct4.requestFocus();
return true;
}
Log.d("KeyCode", String.valueOf(keyCode));
Log.d("event", String.valueOf(event));
return false;
}然后是这个。我有很多不同的变体。我已经能够用它来切换焦点,但没有删除.。
oct3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count > 0){
if(s.charAt(s.length()-1) == ".".charAt(0)){
Log.d("Sequence", "Noticed a \".\"");
isPeriod = true;
} else {
Log.d("Sequence", "Noticed a \""+s+"\"");
}
}
}
@Override
public void afterTextChanged(Editable s) {
if(isPeriod){
s.delete(s.length() -1, s.length() -1);
oct3.clearFocus();
isPeriod = false;
oct4.requestFocus();
}
}
});发布于 2014-03-13 17:00:54
尝试在onTextChanged中设置它
listener = (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) {
if(count > 0){
if(s.charAt(s.length()-1) == '.'){
Log.d("Sequence", "Noticed a \".\"");
CharSequence text = s.subSequence(0, s.length()-1);
Log.d("VIEW CLICKED:", String.valueOf(getCurrentFocus()));
setTextAndAdvance(getCurrentFocus(), text);
} else {
Log.d("Sequence", "Noticed a \""+s+"\"");
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});https://stackoverflow.com/questions/21487072
复制相似问题