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;
}