天天看點

Android軟鍵盤強制彈出,隐藏輸入法.

http://blog.csdn.net/kdsde/article/details/31397583

當我們彈出一個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)

        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)

            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;

}

繼續閱讀