博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android开发中输入法的弹出和隐藏
阅读量:4051 次
发布时间:2019-05-25

本文共 1330 字,大约阅读时间需要 4 分钟。

最近做项目碰到一个比较难解决的问题,就是tabhost中输入法总是会不按道理的出现或者隐藏起来单击出不来。目前已经解决了这个问题,总结一下。  
 
  首先,TabHost中输入法跟一般单个页面中的输入法弹出和隐藏是有区别的。在切换的时候有时候输入法会显示出来,这是我们不希望看到的。所以可以给tabHost添加一个setOnTabChangedListener监听器。然后再处理事件中通过
 
  InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(myTabhost.getApplicationWindowToken(), 0);
 
来隐藏输入法。
 
  其次,在切换中有时会遇到一个问题就是点击EditText控件输入法不弹出,点击其他控件再点击EditText后输入法才会出现。出现这种问题的可能是焦点的问题,解决办法是为EditText添加setOnFocusChangeListener,在这个处理事件中通过判断是否获得了焦点来处理各自的时间。
 
  public void onFocusChange(View v, boolean hasFocus)
 
   {
    InputMethodManager imm = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
    if(hasFocus == true)
    {
 
      imm.showSoftInput(edt, InputMethodManager.SHOW_FORCED);
    }
    else
 
     {
      imm.hideSoftInputFromWindow(edt.getWindowToken(), 0);
    }
  }
 
  如果是单个界面,上面有EditText和其他控件,按照网上说法,应该是程序一启动EditText会自动获取焦点然后弹出输入法,可是我在模拟器和真机上都没出现过这种情况,然后按照网上的说法,让EditText得到焦点就可以了,可是添加了requestFocus后还是不能成功,设置 android:focusable="true"也不行,后来在Activity的onCreate函数中添加
 
Timer timer = new Timer();
timer.schedule(new TimerTask(){
 
@Override
public void run() {
InputMethodManager m = (InputMethodManager)
edt.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
 
}, 1000);
}
 
后,在加载页面后输入法会弹出

转载地址:http://zbici.baihongyu.com/

你可能感兴趣的文章
SpringBoot Logback 配置参数迁移到配置中心 Apollo
查看>>
springboot 自定义webroot的目录
查看>>
springboot springmvc j2ee 做伪静态化 .html 转发到 .jsp
查看>>
我入行以来java框架的几个阶段&论什么是真正的组件开发&项目中部分源码干货分享
查看>>
java-真正面向配置+组件的开发
查看>>
Mybattis Jpa插件简介
查看>>
java编程奇淫技巧之让java帮我们生成java代码后不停服,直接编译为class并且反射为对象直接使用
查看>>
springMVC源码阅读之FORM参数绑定
查看>>
springBoot SpringMVC解决XSS漏洞 -非重写request 支持普通form提交
查看>>
No plugin found for prefix 'install' in the current project解决方案
查看>>
ZUUL2 使用场景
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
也许是世界上最简单最灵活的JAVA CRUD开发方法
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
提交jar包到maven中央仓库2019最新版本
查看>>
eclipse servers view tomcat内存配置
查看>>
HandlerExceptionResolver 踩坑记录
查看>>