我正在构建一个简单的刽子手应用程序。我目前设置键盘隐藏后,用户触摸提交按钮,并限制EditText的最大长度为"1"。
我想要的是,在用户触摸字母键并成功地在编辑文本中输入有效条目后,键盘立即隐藏。我尝试过实现这里使用的KeyEvent方法,并对其进行了修改,以使用getMaxKeyCode()方法监听任何键代码。
更新***:为了澄清,我对回车按钮没有问题,它工作正常。我希望在用户触摸到他们猜测的字母后隐藏键盘。因此,如果用户点击“E”键,一旦“E”字符出现在EditText字段中,键盘就会隐藏。
以下是我在当前迭代中使用的一些代码:
@OnClick(R.id.guess_button)
void submit() {
submitLetter();
}
private void submitLetter() {
Editable userInput = mGuessInput.getText();
String guessStr = mUserInput.toString();
if (mGuessStr.length() != 0) {
checkGuess(
String.valueOf(mGuessStr).charAt(0),
mCodeWord.toUpperCase()
);
mUserInput.clear();
mGuessInput.clearFocus();
hideKeyboard(MainActivity.this);
}
}
public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
View view = activity.getCurrentFocus();
if (view == null) {
view = new View(activity);
}
if (imm != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
以下是我想做的工作:
public void hideKeyboardOnKeyTouch(EditText editText) {
final int generatedKeyCode = KeyEvent.getMaxKeyCode();
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event.getAction() == generatedKeyCode) {
hideKeyboard(MainActivity.this);
}
return false;
}
});
}
然后我在onCreate()中的mGuessInput(EditText视图)上调用上述方法。我也尝试过用这种方法检查ACTION_UP事件,但仍然没有结果。
我可能错过了一个简单的解决方案,但我想我没有看到森林中的树木。我希望这不是一个复制品,但是我一生都找不到一个解决办法来让它工作。请帮帮忙好吗?
这就是你可以尝试做的。在EditText上设置一个onKeyListener
,查看按下的键:
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (editText.getText().toString().length() == 1) {
hideKeyboard(MainActivity.this, <Your view here>);
}
return true;
}
});
尝试将您的hideKeyboard
函数更改为以下内容:
public static void hideKeyboardFrom(Context context, View view) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
我有一个AutoCompleteTextView,它像往常一样在用户键入3个字母后提供建议。一旦我触摸建议列表,我想隐藏软键盘一次。我在下面用表格布局所做的只是在单击除建议列表之外的任何地方时隐藏键盘。 可扩展置标语言 爪哇岛 用于自定义列表的 XML
我已经搜索了半打其他答案,但没有找到一个有效的答案。我只是想在用户按下回车键时关闭软键盘。(相当于极其简单的iOS“辞职键盘”通话。)在下面的代码中,不会调用onEditorAction方法。我在XML文件中设置了EditText视图,片段中的代码如下: 下面是XML文件中的一个片段,我在其中定义了EditText字段。我需要EditText多行。
我试图防止在SearchView上调用requestFocus()后键盘出现,但在Android8上没有解决方案。 我试过: /*3/ /*4/ onGlobalLayout()工作,但软键盘显示了近0.5秒后消失。 即使在调用requestFocus()之后,是否可以帮助隐藏软键盘?
我需要隐藏软键盘以响应单击按钮。我看到了一些关于这方面的帖子,我尝试了: 这很有效。但现在我有两个EditText视图。无论选择了哪个EditText,现在如何隐藏软键盘?我也试过了 ,但那不起作用... 谢谢你的帮助! 编辑:找到解决方案。贴在下面。
我有三个编辑文本字段。在这些字段中,我想只显示第一个字段的软输入键盘,并禁用后面两个字段,即日期和时间字段。 通过使用下面的代码,我可以禁用字段2和字段3的键盘,但当用户关注字段1时,键盘会出现,但当用户点击字段2或字段3时,键盘不会隐藏。虽然当第一次点击字段2或3时,不会出现键盘。 如果软输入键盘已打开,如何隐藏它?
使用操作栏导航加载第二个片段后 重新加载另一个片段,动作栏仍然是visibile 我用一个测试项目用最小的代码加载片段,行为是一样的,分裂条被软键盘隐藏。我怎样才能使它从一开始就显示拆分条?