当我们弹出一个Dialog时候,如果这个Dialog需要输入数据,然后确定后又需要关闭输入法,一般系统的hide,跟show方法总会有各种问题,最霸道的解决方法就是写一个定时器,定时弹出或者关闭输入法。

import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;public class InputTools {    //隐藏虚拟键盘      public static void HideKeyboard(View v)      {          InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );             if ( imm.isActive( ) ) {                 imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );                       }          }            //显示虚拟键盘      public static void ShowKeyboard(View v)      {          InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );                     imm.showSoftInput(v,InputMethodManager.SHOW_FORCED);              }            //强制显示或者关闭系统键盘      public static void KeyBoard(final EditText txtSearchKey,final String status)      {                     Timer timer = new Timer();        timer.schedule(new TimerTask(){        @Override        public void run()        {            InputMethodManager m = (InputMethodManager)            txtSearchKey.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);             if(status.equals("open"))             {                 m.showSoftInput(txtSearchKey,InputMethodManager.SHOW_FORCED);              }             else             {                 m.hideSoftInputFromWindow(txtSearchKey.getWindowToken(), 0);              }         }           }, 300);       }            //通过定时器强制隐藏虚拟键盘      public static void TimerHideKeyboard(final View v)      {          Timer timer = new Timer();        timer.schedule(new TimerTask(){        @Override        public void run()        {            InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );                 if ( imm.isActive( ) )            {                     imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );            }             }          }, 10);       }      //输入法是否显示着      public static boolean KeyBoard(EditText edittext)      {          boolean bool = false;          InputMethodManager imm = ( InputMethodManager ) edittext.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );             if ( imm.isActive( ) )        {                bool = true;         }            return bool;                }}

更多相关文章

  1. 软键盘隐藏和显示问题.
  2. Android(安卓)EditText不弹出输入法焦点问题的总结
  3. android 物理键盘布局
  4. [RN] React Native 键盘管理 在Android(安卓)TextInput遮盖,上移
  5. wakelock的使用
  6. Android(安卓)MTK 8.1 预制应用 (讯飞输入法)
  7. Android(安卓)EditText默认不弹出输入法,以及获取光标,修改输入法E
  8. 隐藏键盘二-----隐藏的同时还要接受其他事件
  9. Android(安卓)-- 经验分享

随机推荐

  1. Android系列之浅谈Android(安卓)3D旋转
  2. Android(安卓)UI开发第二十八篇——Fragm
  3. 应用兼容性Android(安卓)Studio IDEA:基于
  4. 【Android(安卓)UI】Android(安卓)Layout
  5. Android(安卓)Studio主题设置
  6. android的Handler
  7. Android开机LOGO
  8. 为Android开发者定制的搜索引擎
  9. Android上开发Android软件
  10. android - 为安全而设计 - 2 - 开发文档