Android弹出软键盘顶掉导航栏

在开发中会遇到奇怪的问题,比如说点击输入框时弹出的软键盘将下边的导航栏顶上去,网上各种大神都说在AndroidManifest.xml文件添加属性,但是该试的方法都试过还是不行。最后想到一种方法就是:在软键盘弹出和隐藏的时候做监听,
1.当软键盘弹出的时候让其导航栏进行隐藏
getActivity().findViewById(R.id.sports_ll_belowmain).setVisibility(View.GONE);
2.软键盘消失的时候让其显示
getActivity().findViewById(R.id.sports_ll_belowmain).setVisibility(View.VISIBLE);
3.当弹出软禁盘进行页面切换,切换到别的fragment中,此时别的fragment就不会调用软件盘消失的接口,造成另外一个bug就是下面的导航栏没有了,此时为了解决此bug,当viewPager进行切换时判断软键盘是否弹出,如果弹出则让其消失,还有下面的导航栏是否隐藏,若隐藏,则让其显示出来。
View view = getActivity().getWindow().peekDecorView();
if (view!=null){
InputMethodManager inputmanger = (InputMethodManager) getActivity()
.getSystemService(MainActivity.INPUT_METHOD_SERVICE);
inputmanger.hideSoftInputFromWindow(view.getWindowToken(),
0);
}
4.此时有遇到问题就是,当从此fragment切换到另外一个fragemnt然后再切换回去,软键盘没有消失(系统软键盘消失了,自定义的软禁盘没有消失,此时的需求是只要有软禁盘在,下边的导航栏不让其显示),导航栏又显示出来。就是判断该页面软件盘的状态,将其状态值存放到application类,等下次进入该页面时判断状态码,根据状态码做出相应的操作
if (mSportsApp.getSportshow_isshow()==position){
getActivity().findViewById(R.id.sports_ll_belowmain).setVisibility(View.GONE);
}else {
getActivity().findViewById(R.id.sports_ll_belowmain).setVisibility(View.VISIBLE);
}
不断的进行修改最终达到想要的效果

猜你喜欢

转载自blog.csdn.net/xiaoxiaohu_/article/details/70257348