1.通过代码方式隐藏软键盘.

 ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(getCurrentFocus()
        .getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);

2.通过代码方式开启软件盘.

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);    

if (imm.isActive()) {  
     imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);   
}  

3.如何禁止软键盘弹出.

1).在XML文件里  添加一个TextView
    譬如:                              android:id="@+id/tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:focusableInTouchMode="true"/>
            注:android:focusableInTouchMode="true"一定要有


2). TextView tv = (TextView) findViewById(R.id.textview);

               tv.requestFocus();

4.如何获取软键盘高度.

1).全局变量
            private RelativeLayout rl;//父布局id
            private int statusBarHeight;

        2).
           final Context context = getApplicationContext();
           rl.getViewTreeObserver(). addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                 public void onGlobalLayout() {
                      Rect r = new Rect();
                      // r will be populated with the coordinates of your view that area still visible.
                      rl.getWindowVisibleDisplayFrame(r);
                      int screenHeight = rl.getRootView().getHeight();
                      int heightDiff = screenHeight - (r.bottom - r.top);
                      if (heightDiff > 100)
                           statusBarHeight = 0;
                      try {
                           Class<?> c = Class.forName("com.android.internal.R$dimen");
                           Object obj = c.newInstance();
                           Field field = c.getField("status_bar_height");
                           int x = Integer.parseInt(field.get(obj).toString());
                           statusBarHeight = context.getResources().getDimensionPixelSize(x);
                      } catch (Exception e) {
                           e.printStackTrace();
                      }
                     int realKeyboardHeight = heightDiff - statusBarHeight;


                     Log.i("print","软键盘高度: " + realKeyboardHeight);
                 }
             });


5.如何监听软键盘的弹出与隐藏状态.

1).最外层父布局.
     rl = (RelativeLayout) findViewById(R.id.rl);


2).下面这些代码不要在onCreate()方法里:

            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

            rl.getViewTreeObserver().addOnGlobalLayoutListener(
                    new ViewTreeObserver.OnGlobalLayoutListener() {
                        @Override
                        public void onGlobalLayout() {

                        int heightDiff = rl.getRootView().getHeight() - rl.getHeight();
                        if (heightDiff > 200) {
                            
                           弹出的时候处理的逻辑
                            
                        } else {
                           
                            隐藏的时候处理的逻辑
                        }
                    }
                });

更多相关文章

  1. Android(安卓)SDL移植版学习笔记
  2. Android(安卓)之经典源码
  3. Android(安卓)检测键盘是否显示及隐藏键盘
  4. Android(安卓)ViewHolder 优化 ListView
  5. Android平台mass storage相关代码
  6. [置顶] Android(安卓)2.3.5源代码 更新至android 6.0,可以下载,度
  7. js 判断 是否为android
  8. 使用代码为textview设置drawableLeft
  9. Android的OpenGL学习笔记(1)

随机推荐

  1. 谈谈android的类xp Ghost时代
  2. Android上获得系统root权限的方法
  3. 事件处理机制之基于监听的事件处理机制
  4. android实时视频网络传输方案总结(一共有
  5. 模仿iOS版微信的滑动View
  6. 【分享】性能比肩美拍秒拍的Android视频
  7. Android中数据文件解析(Json解析【从服务
  8. launcher源码分析
  9. 【2014年最后的分享啦】Android实现自定
  10. Android(安卓)里的对话框Dialog 实现机制