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

前端之家收集整理的这篇文章主要介绍了从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相关文章