安卓 - 编程显示键盘

49

我有一个最初是禁用状态的EditText字段。

我想将其设置为启用状态,将光标放在上面,然后键盘应该出现。

我尝试了以下代码,所有内容都有效,只是键盘不会显示。

@Override
protected void onCreate(Bundle savedInstanceState{
    editText.setEnabled(true);
    editText.requestFocus();
    getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}

6
请参考此链接:https://dev59.com/Smox5IYBdhLWcg3ww28D - Rachita Nanda
这是与我的代码相同的代码。 - Trombone0904
有其他得到赞同的答案。你试过它们了吗? - Rachita Nanda
3个回答

122

这可能是一个已经过时的解决方案。

隐藏键盘的方法:

InputMethodManager imm = (InputMethodManager)getSystemService(
  Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

显示键盘:
InputMethodManager imm = (InputMethodManager)   getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

9
我在 onCreate 中运行了你的代码,但它对我不起作用。 - Saeed Neamati
2
由于您正在使用“toggleSoftInput”来显示键盘,因此您可以将其用于显示和隐藏,因为它是切换功能。 - Marc Alexander
5
toggleSoftInput已经被弃用。 - Wajid
1
请使用imm.showSoftInput(view, 0)代替toggleSoftInput,因为toggleSoftInput已经过时。 - Farruh Habibullaev

17

尝试使用我的showKeyboard方法

 public static void showKeyboard(EditText mEtSearch, Context context) {
    mEtSearch.requestFocus();
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}

public static void hideSoftKeyboard(EditText mEtSearch, Context context) {
    mEtSearch.clearFocus();
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(mEtSearch.getWindowToken(), 0);


}

1
我会从参数中删除Context并从mEtSearch.getContext()获取它。 - Eugene Voronoy

4

您可以使用此方法,在调用requestFocus()在EditText上后强制显示键盘。

public static void showKeyboard(FragmentActivity activity) {
        InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.toggleSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接