【问题标题】:Updating ImeOptions of the current focused EditText更新当前焦点 EditText 的 ImeOptions
【发布时间】:2016-09-17 23:26:13
【问题描述】:

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

有人知道怎么做吗?

【问题讨论】:

    标签: android android-edittext imeoptions


    【解决方案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);
        }
    }
    

    【讨论】:

    • 是的,效果不太好......但很好的想法。希望我们能以某种方式动态刷新 IME ACTION...
    • 重启输入也一样有效: // 在当前聚焦的EditText上重启输入 InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.restartInput(editText)
    【解决方案2】:

    你可以试试这样的:

    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);
    }
    

    【讨论】:

      【解决方案3】:

      从上面的答案:

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

      只有重新启动输入才能解决问题。否则,可能会出现键盘闪烁。输入重启也不会清除字段的内容,即不会导致数据丢失,这是期望的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 2021-04-06
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        相关资源
        最近更新 更多