我有ViewPager,它显示片段,其中一个包含edittext。当用户单击edittext然后滑动到另一个页面时,键盘会隐藏一半的屏幕。当页面改变时,如何隐藏键盘?我尝试过类似的东西,但它不起作用:
mFragmentsViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
InputMethodManager inputManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(floatingActionButton.getWindowToken(), 0);
switch (position){
case 0:
return mFragments.get(0);
case 1:
return mFragments.get(1);
case 2:
return mFragments.get(2);
default:
return mFragments.get(0);
}
}
@Override
public int getCount() {
return 3;
}
});
提前感谢大家的解答!
答案 0 :(得分:2)
我建议您将一个OnPageChangeListener类型的侦听器添加到ViewPager并在onPageSelected方法上添加代码,而不是让适配器处理键盘:
mFragmentsViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
希望这有帮助!
答案 1 :(得分:1)
制作这样的通用功能,您可以在任何需要的地方重复使用
public static void hideSoftKeyboard(Activity activity) {
try {
InputMethodManager inputMethodManager =
(InputMethodManager) activity.getSystemService(
Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
activity.getCurrentFocus().getWindowToken(), 0);
//inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
catch (Exception e)
{
e.printStackTrace();
}
}