gpt4 book ai didi

android - 从 ViewPager fragment 隐藏 Android 应用程序中的软键盘

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

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

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

我最近的尝试是将隐藏键盘的代码放在 fragment 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 - 从 ViewPager fragment 隐藏 Android 应用程序中的软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12167422/

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