gpt4 book ai didi

java - 可靠地隐藏软键盘

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:42 25 4
gpt4 key购买 nike

我有一个应用程序,需要在大量操作 上关闭软键盘。例如,当点击一个按钮时,当一个新的布局被绘制时,当屏幕方向改变时,当 Controller 告诉时 strong> UI 等等。我使用 optionsMenuButton 通过 ViewFlipper 翻转 View ,显然我希望键盘隐藏在翻转 View 中(那里没有输入字段)。

到目前为止,我已经尝试过这些,并说明了为什么它们不可靠:

这个没有用,因为我有很多 editTexts 和其他 View 。如果可能的话,我需要一个更通用的,不需要 View 作为参数的。

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

这个对我根本不起作用:

getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

这个可以工作,但是在翻转 View 时会立即再次弹出键盘。

InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);

这个有时有效,但 getCurrentFocus() 大多数时候返回 null。

InputMethodManager inputManager = (InputMethodManager)            
Context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);

这个只有在显示键盘时才有效:

getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

此代码不像第一段代码那样与 EditText 一起工作,而是与根布局一起工作,根布局随方向变化和每次 oncreate 被调用而变化。我有不同的横向/纵向和普通/大布局 XML。所有根布局都有 ID root。这第一次运行良好,但之后就不再运行了。

InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(findViewById(R.id.root).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

底线:我已经尝试了很多软键盘隐藏方法,但它们似乎都不能可靠地工作。 有没有可靠的隐藏软键盘的方法?

最佳答案

我认为如果您处理 getCurrentFocus() 的空情况,您就可以开始了。我使用下面的方法,效果非常好!

     /* Hide Keyboard */
public static void hideKeyboard(Activity activity){
InputMethodManager inputMethodManager = (InputMethodManager)activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
View focus = activity.getCurrentFocus();
if(focus != null)
inputMethodManager.hideSoftInputFromWindow(focus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}

关于java - 可靠地隐藏软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com