完美的隱藏軟鍵盤方法

2022-03-11 05:31:01 字數 1366 閱讀 5637

最近有這麼乙個需求:在點選edittext時彈出軟鍵盤,然後在點選空白處或者其他控制項的時候隱藏軟鍵盤。這個需求在平板電腦上非常實用,因為螢幕大,使用者不可能每次都點左下角去隱藏,並且點選空白處更容易。

剛開始從網上搜尋,不是很理想,後來突然想到android的事件分發機制,於是想到了實現方法:

1

public

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...