android沒有對軟鍵盤設定監聽事件,這需要我們去收到去設定軟鍵盤顯示和隱藏做監聽
軟體盤抬起會改變到螢幕底部的距離,根據這個原理我們在onlayout中就能判斷出鍵盤時候抬起。
1)在androidmanifast.xml中設定activity android:windowsoftinputmode="statealwayshidden|adjustresize"
2)自定義乙個view重寫onlayout方法
androidmanifast.xml
keyboardlayout
public class keyboardlayout extends linearlayout
public keyboardlayout(context context)
public static final byte keyboard_state_show = -3;
public static final byte keyboard_state_hide = -2;
public static final byte keyboard_state_init = -1;
private boolean mhasinit;
private boolean mhaskeybord;
private int mheight;
private onkeyboardschangelistener mlistener;
private int state=keyboard_state_init;
public void setonkeyboardstatelistener(onkeyboardschangelistener listener)
@override
protected void onlayout(boolean changed, int l, int t, int r, int b)
} else
if (mhasinit && mheight > b + 200 && state != keyboard_state_show)
state = keyboard_state_show;
} if (mhasinit && mhaskeybord && mheight <= b+200 && state != keyboard_state_hide)
state = keyboard_state_hide;
} }public inte***ce onkeyboardschangelistener
}
android:windowsoftinputmode各值得含意
【a】stateunspecified:軟鍵盤的狀態並沒有指定,系統將選擇乙個合適的狀態或依賴於主題的設定
【b】stateunchanged:當這個activity出現時,軟鍵盤將一直保持在上乙個activity裡的狀態,無論是隱藏還是顯示
【c】statehidden:使用者選擇activity時,軟鍵盤總是被隱藏
【d】statealwayshidden:當該activity主視窗獲取焦點時,軟鍵盤也總是被隱藏的
【e】statevisible:軟鍵盤通常是可見的
【f】statealwaysvisible:使用者選擇activity時,軟鍵盤總是顯示的狀態
【g】adjustunspecified:預設設定,通常由系統自行決定是隱藏還是顯示
【h】adjustresize:該activity總是調整螢幕的大小以便留出軟鍵盤的空間
【i】adjustpan:當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋和使用者能總是看到輸入內容的部分
android監聽虛擬鍵盤隱藏和顯示事件
剛開始在onconfigurationchanged中監聽,結果發現該方法在configuration變化即配置檔案發生變化時才會被呼叫,如橫豎屏切換,android重新載入配置檔案時。而鍵盤隱藏不會觸發該方法。後來採用如下方法完美解決了鍵盤隱藏監聽事件。該activity的最外層layout fi...
Android 軟鍵盤的顯示與隱藏監聽
package com.util import import android.graphics.rect import android.view.view import android.view.viewtreeobserver created by zhaoxin on 2018 7 11.pub...
android 監聽鍵盤的彈起和隱藏
在layout的根布局用自定義的,重寫onlayout方法的keyboardlayout public class keyboardlayout extends relativelayout public keyboardlayout context context,attributeset att...