小编典典

聚焦edittext时如何显示软键盘

all

我想在获得焦点时自动显示软键盘EditText(如果设备没有物理键盘),我有两个问题:

  1. Activity显示my时EditText,焦点集中但不显示键盘,需要再次点击才能显示键盘(显示my时应该Activity显示)。

  2. 当我在键盘上单击完成时,键盘被关闭但EditText保持专注并且你不想要(因为我的编辑已完成)。

继续,我的问题是有一些更像 iPhone 的东西:它使键盘与我的EditText状态(聚焦/不聚焦)保持同步,如果有物理键盘,当然不会显示软键盘。


阅读 107

收藏
2022-03-11

共1个答案

小编典典

要强制出现软键盘,您可以使用

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
yourEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

为了消除对 的关注EditText,遗憾的是你需要一个假人View来抓住焦点。


要关闭它,您可以使用

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

这适用于在对话框中使用它

public void showKeyboard(){
    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}

public void closeKeyboard(){
    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
2022-03-11