从ViewPager Fragments中隐藏Android应用程序中的软键盘

我有一个 Android应用程序,其中包含一个包含2个片段的ViewPager.第一个片段包含EditText字段.当应用程序启动时,该字段立即获得焦点并启动软键盘(我想要发生).第二个片段仅包含一个列表(没有可编辑的文本字段).当我从片段1滑动到片段2时,我希望键盘能够消失.我尝试过的任何东西似乎都没有用.键盘不仅保持在视图中,还继续更新片段1的EditText字段.

我想我要么使用不正确的代码来隐藏键盘或将其放在错误的位置.如果任何人都可以发布正确实现的示例,将不胜感激!

我最近的尝试是放置应该在片段1的onDetach()方法中隐藏键盘代码

@Override
public void onDetach()
{
    super.onDetach();

    InputMethodManager imm = (InputMethodManager) this.context.getSystemService(Context.INPUT_METHOD_SERVICE);

    // I'VE TRIED ALL THREE BELOW,NONE OF THEM WORK...

        // imm.hideSoftInputFromWindow(this.messageView.getwindowToken(),0);
        // imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
        // this.context.getwindow().setSoftInputMode(WindowManager.LayoutParams.soFT_INPUT_STATE_ALWAYS_HIDDEN);
}

解决方法

请参阅 this answer.基本上,您需要让ViewPager的OnPagechangelistener为您隐藏键盘. (如果希望滑动动画保持平滑,请在onPageScrollStateChanged而不是onPageSelected中执行此操作.)
@Override
public void onPageScrollStateChanged(int state)
{
    if (state == ViewPager.SCROLL_STATE_IDLE)
    {
        if (mViewPager.getCurrentItem() == 0)
        {
            // Hide the keyboard.
            ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
                .hideSoftInputFromWindow(mViewPager.getwindowToken(),0);
        }
    }
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...