zoukankan      html  css  js  c++  java
  • Android强制弹出,隐藏输入法.

    当我们弹出一个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;
              
          }
    }
  • 相关阅读:
    堆排序算法(C#实现)
    在 .NET 2.0 中享受 .NET 3.0的特性
    火花:使用文件管理功能管理我的连接
    我们可以做的更好
    有价值的文章
    网上掏宝
    WPF绑定技术一步步学
    结构类型需要重载GetHashCode和Equals
    关于扩展Visual Studio 2005的相关资料
    插件模型应该考虑的问题
  • 原文地址:https://www.cnblogs.com/LIANQQ/p/3573983.html
Copyright © 2011-2022 走看看