更新当前关注的EditText

时间:2016-05-20 16:02:52

标签: android android-edittext imeoptions

我有一个EditText,其ImeOptions设置为EditorInfo.IME_ACTION_NEXT。因此,当聚焦场时,键盘上会显示“下一步”按钮。 我希望按钮在用户输入时更改为“完成”(由于某些原因)。 所以我有一个TextWatcher,我尝试在“afterTextChanged”上将ImeOptions更改为EditorInfo.IME_ACTION_DONE,但键盘上的键不会改变。 我试图隐藏键盘,更改ImeOptions并再次显示键盘但它不起作用(此解决方案适用于iOS)。

有人知道该怎么做吗?

3 个答案:

答案 0 :(得分:1)

我试过这个并且它有效,问题是你有时可以看到键盘何时出现并消失。

@Override
public void afterTextChanged(Editable s) {

    if (/*condition*/) {

        // Change the IME of the current focused EditText
        editText.setImeOptions(EditorInfo.IME_ACTION_DONE);


        // Hide the keyboard
        hideKeyboard(activity);

        // Restart the input on the current focused EditText
        InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.restartInput(editText);

        // Show the keyboard
        showKeyboard(activity);
    }
}

答案 1 :(得分:1)

你可以尝试这样的事情:

if (your condition) {


    youreditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
    hideKeyboard(activity);
    InputMethodManager input= (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    input.restartInput(youreditText);

    showKeyboard(youractivity);
}

答案 2 :(得分:0)

根据以上答案:

// Restart the input on the current focused EditText
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.restartInput(editText);

只有重新启动输入才能达到目的。否则,预计键盘闪烁。输入重新启动也不会清除字段的内容,即不会导致数据丢失,这是理想的行为。