EditText requestFocus()不适用于api< 20

时间:2016-03-31 16:02:17

标签: android android-edittext

我有一个视图,其中包含4个针脚传递的编辑文本。我希望他们这样做的是当用户将数字放入第一个编辑文本时,焦点会改变并转到第二个编辑文本。从第二到第三,从第三到第四。这是代码:

private View.OnKeyListener onKeyListener = new View.OnKeyListener() {
    @Override
    public boolean onKey(final View v, int keyCode, KeyEvent event) {
        if (isKeycodeADigit(keyCode) && event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (v.getId()) {
                case R.id.passcode_first:
                    requestEditTextFocus(mSecondDigit);
                    replaceDigitIfEditTextNotEmpty(mFirstDigit, keyCode);
                    break;
                case R.id.passcode_second:
                    replaceDigitIfEditTextNotEmpty(mSecondDigit, keyCode);
                    requestEditTextFocus(mThirdDigit);
                    break;
                case R.id.passcode_third:
                    replaceDigitIfEditTextNotEmpty(mThirdDigit, keyCode);
                    requestEditTextFocus(mFourthDigit);
                    break;
                case R.id.passcode_fourth:
                    replaceDigitIfEditTextNotEmpty(mFourthDigit, keyCode);
                    break;
                default:
                    break;
            }
        }
        return false;
    }
};
private void requestEditTextFocus(final EditText editText) {
    editText.requestFocus();
    int selection = editText.length() == 0? 0 : 1;
    editText.setSelection(selection);
}

在api> = 20时一切正常但在较低的机器人焦点上不会向前传递。 有什么想法吗?

0 个答案:

没有答案