Android 软键盘踩过的坑心得

  一,.软键盘隐藏与显示几种方式

     软键盘的的使用在实际开发中非常的常用,我就是讲讲自己在实际开发中遇到的坑与总结.

    1.判断软键是否显示与隐藏,我们可以使用以下的方法,通过返回的boolean值来做出判断.这方法在实际的开发中,可以收到的对editText焦点的控制,当键盘显示的时候显示光标,否则

不显示editText的光标.

     rootView 是布局文件的跟布局
 /**
  * 判断软键盘显示或隐藏方法一
  * @param rootView 布局的根view
  * @return
  */
public  static  boolean isKeyboardShown(View rootView) {
     Rect rect = new Rect();
     rootView.getWindowVisibleDisplayFrame(rect);
     DisplayMetrics dm = rootView.getResources().getDisplayMetrics();
     int heightDiff = rootView.getBottom() - rect.bottom;
     return heightDiff > 100 * dm.density;

 }
/**
  * 判断软键盘显示或隐藏方法二
  */
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 //isOpen若返回true,则表示输入法打开
 boolean isOpen=imm.isActive();
  2.手动的隐藏软键盘的方法,适用于任何场景
   
/**
 * 1.隐藏软键盘(可用于ActivityFragment)方法一
   
 */
public static void hideSoftKeyboard(Context context, List<View> viewList) {
    if (viewList == null) return;

    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);

    for (View v : viewList) {
        inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}
/*
 * 2.隐藏软键盘方法二
 */
  InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
  //这里的view可以EditText对象
  imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

 看到上面的方法可能很多的小白懵逼了,很多时候我们手动要显示软键盘的时候,传入的参数不是带有集合的view的参数,这种方法实际使用的情况是
当你弹出软键盘的操作在Adapter中时候,如何手动取消软键盘呢?
   解决方法就是在绑定数据,获取弹出软键盘控件的时候,将每个控件存入到集合中,当需要手动隐藏软键盘的时候,就可以遍历集合对每一个view进行
隐藏软键盘的操作.
3.手动显示软键盘的方法
/**
 * 1.显示软键盘方法一
 * @param view  
 * @param context
 */
public void mShowSoftKeyboard(View view,Context context ) {
    if (view.requestFocus()) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    }
}
/**
 * 2.显示软键盘方法二
 */
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
  imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);  

 ***最后一种直接了当的方法,一个方法解决隐藏和显示两个问题
***
/**
 * 如果输入法在窗口上已经显示,则隐藏,反之则显示一个方法解决隐藏和显示的两个问题
 */
  InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
  imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);  
最后总结:希望此篇文章对你有所帮助,下次有时间完善软键盘弹出遮挡布局的问题.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值