android中showSoftInput不起作用 与 toggleSoftInput

来源:互联网 发布:怎么用数据透视表求和 编辑:程序博客网 时间:2024/05/22 17:08

有些人会在activity或者fragment的onCreate(或者onCreateView)函数中就去调用上面两行代码,发现并不起作用,这是因为在onCreate中或者其他声明周期函数(onStart,onResume等)中,该EditText还未被绘制出来,InputMethodManager还不能获取到该控件的焦点,所以键盘并不会显示,而且manager.showSoftInput函数返回false,告诉你键盘并未显示。所以只有当EditText完全被绘制出来了,才可以去获取焦点。

解决办法


edittext.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {  
      @Override  
      public void onGlobalLayout() {  
          InputMethodManager manager = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);  
          manager.showSoftInput(edittext, 0);  
      }  
});  


在该段代码中去监听edittext是否被绘制完毕,如果绘制完毕则调用onGlobalLayoutListener.onGlobalLayout函数,在该函数中去显示键盘,运行下,就发现键盘可以正常弹出啦。


对于toggleSoftInput 方法的区别

InputMethodManager imm = (InputMethodManager)        mContext.getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
showsoftinput 需要指定text,那么需要text绘制完成才会真正的将焦点给text并弹出软键盘,但是方法紧接着edittext创建执行,那么此时未发现绘制好的text,那么返回FALSE。也就不弹出软键盘。但是togglesoftinput 直接弹出软键盘,不指定焦点给text。



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办 孕妇尿白细胞1是怎么办 药流期间喂奶了怎么办 20多岁卵巢早衰怎么办 3岁儿童肚子胀气怎么办 肚子又胀又痛怎么办 1岁宝宝肚子胀气怎么办 2岁宝宝肚子胀气怎么办 产后腰粗肚子大怎么办 发烧后腹泻拉水怎么办 又吐又拉还发烧怎么办 喝中药恶心想吐怎么办 生完孩子肛门疼怎么办 拉完大便肛门痛怎么办 肚子总是凉凉的怎么办 京东金条风控了怎么办 京东维修没发票怎么办 假牙吞到肚子里怎么办 眼睛一只大一只小怎么办 一个眼睛大一个眼睛小怎么办 电脑上的字模糊怎么办 无忧乐行注销了怎么办 连供墨盒有空气怎么办 30岁突然停经了怎么办 下面很痒怎么办白带多 私处有点痒怎么办洗液 人的下体皮肤痒怎么办 打球手指关节肿了怎么办 婴儿2个月鼻塞怎么办 3个月婴儿鼻塞怎么办 2个月婴儿感冒了怎么办 头发剪短了很丑怎么办 头发剪了后悔了怎么办 额头的碎头发翘怎么办 带耳机时间长耳朵疼怎么办 种的睫毛容易掉怎么办 走路多了脚背疼怎么办