我正在尝试使用滑动手势来完成片段,如果片段正在显示键盘,则会隐藏键盘。以下是一个示例:
public void finishFragment() {
View focus = getCurrentFocus();
InputMethodManager imm = null;
if (focus != null) {
imm = (InputMethodManager) focus.getContext().
getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow(focus.getWindowToken(), 0);
}
}
if (getFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
}
}
不幸的是,由于我在片段堆栈旁边调用服务,因此该服务挂起了UI显示,从而使其外观变得模糊。有没有人知道如何在不调用服务的情况下隐藏键盘,或者我应该调用Async
进程?更好的是,是否有人知道onBackPressed()
如何移除键盘?
答案 0 :(得分:0)
在Android上只有两种方法可以控制键盘:
所以回答你的问题:“有没有人知道如何在不调用服务的情况下隐藏键盘”?您可以在AndroidManifest中执行以下操作,其中ActivityX是您希望此类行为的活动。
<强>的AndroidManifest.xml:强>
<activity
android:name="com.namespace.of.ActivityXYZ"
android:windowSoftInputMode="stateHidden" />
这将用于最初为ActivityX隐藏键盘,但我不确定这是否会在滑动以完成片段时为您提供所需的行为/缺乏滞后性。还可以尝试将“stateHidden”更改为“stateAlwaysHidden”或“stateUnchanged”。如果您不知道,请查看这些内容here。
另一种方法是:不是检查焦点并以编程方式获得键盘,为什么不完成()管理您希望结束的片段的活动?如果键盘打开,它也会隐藏键盘。
希望这有帮助!