Android 隐藏软键盘

Android软键盘隐藏方法汇总
本文汇总了多种在Android项目中隐藏软键盘的有效方法,包括使用InputMethodManager的各种API调用方式,以及设置窗口属性来控制软键盘的行为。这些方法适用于不同场景下的需求。

项目中需要用到隐藏键盘的一些操作,就在网上简单的搜索了一下,发现了一个总结的比较全的博客,在这里就简单的转载一下,哈哈。

转载的博客的地址为:http://blog.sina.com.cn/s/blog_87479ba60101akfh.html

通过代码验证的方法:

1:隐藏系统软键盘的方法一

 public static void closeBoard(Context mcontext) {
  InputMethodManager imm = (InputMethodManager) mcontext
    .getSystemService(Context.INPUT_METHOD_SERVICE);
  if (imm.isActive())  //一直是true
   imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
     InputMethodManager.HIDE_NOT_ALWAYS);
 }

2:隐藏系统软键盘的方法二

 public void hideSystemKeyBoard(Activity activity,View v) {
  InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
 }

下面的函数也可以起到隐藏到系统软键盘的作用,仅作为参考,程序中可以根据自己的情况调用。
1:对隐藏软键盘有用的函数为

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

这句代码可以抑制软键盘的出现,除非用户接触了EditText区域。
2:你可以强制android隐藏虚拟键盘,用InputMethodManager方法,调用hideSoftInputFromWindow。

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

这样可以强制在任何情况下隐藏虚拟键盘。
3:这个方法前面有提到,给出代码。

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
//得到InputMethodManager的实例 
if (imm.isActive()) { 
//如果开启 
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS); 
//关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的 
} 

4:另一种隐藏的方法,测试可行。

int flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 
getWindow().addFlags(flags); 

5:在onclick事件下.以下方法可行.(如果是EditText失去焦点/得到焦点,没有效果) ,有待验证。

InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值