首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

防止BottomSheetDialogFragment隐藏键盘

BottomSheetDialogFragment是Android开发中的一个类,用于实现底部弹出的对话框。在使用BottomSheetDialogFragment时,有时会遇到隐藏键盘的问题。下面是解决这个问题的方法:

  1. 在BottomSheetDialogFragment的onCreateDialog方法中,获取Dialog对象,并设置Dialog的OnShowListener监听器。
代码语言:txt
复制
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.setOnShowListener(dialogInterface -> {
        // 隐藏键盘
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(dialog.getWindow().getDecorView().getWindowToken(), 0);
    });
    return dialog;
}
  1. 在OnShowListener的回调方法中,获取InputMethodManager对象,并调用hideSoftInputFromWindow方法隐藏键盘。这样,在BottomSheetDialogFragment显示时,键盘就会被隐藏起来。

这种方法可以确保在BottomSheetDialogFragment显示时,键盘总是被隐藏起来,提升用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android点击其他地方隐藏键盘

    Android点击其他地方隐藏键盘 1.第一种:隐藏页面一进来EditText获取焦点就弹出软键盘 在oncreate()里调用如下方法即可 /** * 隐藏键盘 */...,点击其他空白区域隐藏键盘 此方法可以写到BaseActivity中其他Activity就相应的也会继承 @Override public boolean dispatchTouchEvent...return super.dispatchTouchEvent(ev); } /** * 根据EditText所在坐标和用户点击的坐标相对比, * 来判断是否隐藏键盘...,因为当用户点击EditText时则不能隐藏 */ private boolean isShouldHideKeyboard(View v, MotionEvent event) {...这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager,隐藏键盘

    3.2K10

    Android开发中软键盘的显示和隐藏

    本篇内容通过操作软键盘的函数着手详细分析了隐藏或者显示软键盘的实现方法,并且对其中重要的代码做了详细分析。 一、开篇 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求。...2.3 隐藏键盘 虽然 showSoftInput() 方法是有效的,但是想要隐藏键盘,就没有提供对应的 hideSoftInput() 方法,但是却有一个 hideSoftInputFromWindow...() 方法,可以用来隐藏键盘。...而第二个参数,就是隐藏键盘的标志位,如果没有特殊要求的话,直接传递 0 就好了。...2.4 切换键盘的弹出和隐藏 在 InputMethodManager 中,还提供了一个 toggleSoftInput() 方法,如同它的名字一样,它可以让软键盘在显示和隐藏之间切换。 ?

    2.6K10

    Android 开发之Dialog中隐藏键盘的正确使用方法

    Android 开发之Dialog中隐藏键盘的正确使用方法 场景:弹出一个Dialog,里面有一个EditText,用来输入内容,因为输入时,需要弹出键盘,所以当Dialog消失时,键盘要一起隐藏。...inputMethodManager.hideSoftInputFromWindow(edContent.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } 运行之后,发现根本无法隐藏...} return false; } } 跟踪进去发现参数 windowToken 是 null,而且 mServedView 也是null,所以直接返回false,无法隐藏...也就是说,你监听Cancel或者Dismiss都是不行的,因为此时Dialog已经消失,用于输入的服务窗体已经是null了,所以你要想 隐藏键盘,就需要在Dismiss之前处理,那这个入口在哪呢?...为了当点击空白处时,可以隐藏Dialog,所以我们在构造函数中加了一句话 this.setCanceledOnTouchOutside(true); 所以当我们点击空白区域时,会触发Dialog的onTouchEvent

    2.1K10
    领券