只是想知道如何在应用程序从EditText收集输入后立即让软键盘消失。现在," Save"按钮收集文本并成功将EditText中的字符串设置为空白,但软键盘在方向切换之前不会消失。我尝试以编程方式隐藏软键盘,但它无法正常工作。
这是“保存”按钮代码:
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (newListEditText.getText().length() > 0) { //Make sure the user actually wrote something
addStore(newListEditText.getText().toString()); //Adds a button to view with name from EditText
newListEditText.setText("");
((InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE)).hideSoftInputFromInputMethod(
newListEditText.getWindowToken(), 0); //Supposed to hide soft keyboard but doesn't do it
我也尝试将代码[android:imeOptions =" actionDone"]插入到xml布局文件中,正如在回答类似问题时所建议的那样,但没有任何改变。
提前感谢您的意见!
答案 0 :(得分:2)
只需替换它:
Context.INPUT_METHOD_SERVICE)).hideSoftInputFromInputMethod(
用这个:
Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
答案 1 :(得分:0)
使用此代码执行此操作..
InputMethodManager ipmm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
ipmm.hideSoftInputFromWindow(url.getWindowToken(), 0);
你可以忽略并放置" null'代替url.getWindowToken()。
仅供参考 - 在我的案例/代码中,我使用了url作为通过editText收到的字符串,例如
inputText = (EditText) findViewById (R.id.edittext1);
String url = inputText.getText().toString();
答案 2 :(得分:0)
尝试此代码,因此每当用户触摸其他部分pf屏幕,然后再编辑文本, 软键盘会消失。
因此,在您的情况下,如果用户已完成文本并尝试触摸按钮,则此功能将起作用。
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
View v = getCurrentFocus();
boolean ret = super.dispatchTouchEvent(event);
if (v instanceof EditText) {
View w = getCurrentFocus();
int scrcoords[] = new int[2];
w.getLocationOnScreen(scrcoords);
float x = event.getRawX() + w.getLeft() - scrcoords[0];
float y = event.getRawY() + w.getTop() - scrcoords[1];
Log.d("Activity",
"Touch event " + event.getRawX() + "," + event.getRawY()
+ " " + x + "," + y + " rect " + w.getLeft() + ","
+ w.getTop() + "," + w.getRight() + ","
+ w.getBottom() + " coords " + scrcoords[0] + ","
+ scrcoords[1]);
if (event.getAction() == MotionEvent.ACTION_UP
&& (x < w.getLeft() || x >= w.getRight() || y < w.getTop() || y > w
.getBottom())) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getCurrentFocus()
.getWindowToken(), 0);
}
}
return ret;
}