最近有這麼乙個需求:在點選edittext時彈出軟鍵盤,然後在點選空白處或者其他控制項的時候隱藏軟鍵盤。這個需求在平板電腦上非常實用,因為螢幕大,使用者不可能每次都點左下角去隱藏,並且點選空白處更容易。
剛開始從網上搜尋,不是很理想,後來突然想到android的事件分發機制,於是想到了實現方法:
1public
class homeactivity extends
activity 13}
14return
super
.dispatchtouchevent(ev);15}
1617
/**18
* 根據edittext所在座標和使用者點選的座標相對比,來判斷是否隱藏鍵盤,因為當使用者點選edittext時沒必要隱藏
19*
20*
@paramv21
* @param
event
22*
@return
23*/
24private
boolean
isshouldhideinput(view v, motionevent event) ;
27v.getlocationinwindow(l);
28int left = l[0], top = l[1], bottom = top + v.getheight(), right =left
29 +v.getwidth();
30if (event.getx() > left && event.getx() 31 && event.gety() > top && event.gety() 38//
如果焦點不是edittext則忽略,這個發生在檢視剛繪製完,第乙個焦點不在editview上,和使用者用軌跡球選擇其他的焦點
39return
false;40
}4142/**
43* 多種隱藏軟體盤方法的其中一種
44*
45*
@param
token
46*/
47private
void
hidesoftinput(ibinder token) 53}
54......
55 }
下面解釋一下**,首先這個方法要實現activity的dispatchtouchevent方法,其實不一定是acitivty,3.0的fragment也可以,主要目的是攔截使用者觸控事件。具體android的事件分發機制請看我的另乙個部落格:
現在,當使用者觸控時,dispatchtouchevent就會被呼叫,之後的方法都有比較詳細的注釋,不再贅述。
隱藏軟鍵盤隨筆
1 軟鍵盤的狀態 隱藏或顯示。一 自動彈出軟鍵盤 timer timer new timer timer.schedule new timertask 2000 二 軟鍵盤 activity中設定 android windowsoftinputmode stateunspecified 預設設定 軟...
Android隱藏軟鍵盤的方法
1.隱藏軟鍵盤的方法 1 在mainfest檔案中把對應的activity設定android windowsoftinputmode statehidden 或者android windowsoftinputmode stateunchanged 2 可以在布局中放乙個隱藏的textview,然後在...
Android 隱藏 顯示軟鍵盤方法
隱藏軟鍵盤的終極方法 public class softkeyboardutil 隱藏軟鍵盤 可用於activity,fragment public static void hidesoftkeyboard context context,list viewlist 那 softkeyboardut...