我想在获得焦点时自动显示软键盘EditText(如果设备没有物理键盘),我有两个问题:
EditText
当Activity显示my时EditText,焦点集中但不显示键盘,需要再次点击才能显示键盘(显示my时应该Activity显示)。
Activity
当我在键盘上单击完成时,键盘被关闭但EditText保持专注并且你不想要(因为我的编辑已完成)。
继续,我的问题是有一些更像 iPhone 的东西:它使键盘与我的EditText状态(聚焦/不聚焦)保持同步,如果有物理键盘,当然不会显示软键盘。
要强制出现软键盘,您可以使用
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来抓住焦点。
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); }