2

我想做以下事情。用户应该能够从标准键盘(硬件或软件)输入一个字母(仅字母)。如果他正在输入另一个字母,那么前一个字母应该替换为这个字母。所以应该只显示当前字母。用户应该能够关闭此对话框并恢复活动。如果他点击键盘上的“完成”按钮,活动应该知道他输入了什么字母。

所以我考虑了警报对话框并编辑带有一些扩展名的文本以仅显示当前字符。这很简单。

但是,这已经让我很生气了,尽管编辑文本是焦点,但在单击编辑文本之前,键盘不会出现在屏幕上。为什么呢?应该是,不是吗?

我不会像下面这样回答,因为我不应该手动做。它应该是自动的。此外,我不确定这将如何与硬件键盘一起使用。

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

我想知道为什么在编辑文本获得焦点后不显示键盘?在不手动启用和禁用软件键盘的情况下,我应该怎么做才能获得此功能。

4

2 回答 2

0

有关您的信息,请参阅此相关问题:为什么软键盘在活动开始时显示或不显示?. 您可以通过将 EditText 封装到 ScrollView 中来替代阅读它。

但这并不比众所周知的解决方法(手动启用软件键盘)更令人满意,因为我们不明白为什么它在这种情况下效果更好......

于 2013-09-10T20:24:51.007 回答
0

用这个。

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
于 2013-07-17T14:13:41.697 回答