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);
}
不断的进行修改最终达到想要的效果
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值