gpt4 book ai didi

android - 在外部点击时隐藏 Fragment 中的 Android 软键盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:01 26 4
gpt4 key购买 nike

我有一个包含用于输入的 EditText 的 fragment ,但现在我想在用户单击 EditText 之外的屏幕时关闭键盘。

我知道如何在 Activity 中执行此操作,但对于 fragment 来说似乎有所不同。

我在 view.onTouchListener 上调用这个方法

public static void hideSoftKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}

谁有解决办法,谢谢

最佳答案

在 fragment 的父 Activity 中覆盖以下方法:

 @Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if ( v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int)event.getRawX(), (int)event.getRawY())) {
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
return super.dispatchTouchEvent(event);
}

并在 fragment 的布局中使用此属性:

android:focusableInTouchMode="true"

希望对您有所帮助。

关于android - 在外部点击时隐藏 Fragment 中的 Android 软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889141/

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