android 監(jiān)聽鍵盤關(guān)閉方法

最近項目里面要用到鍵盤,并且要控制鍵盤的關(guān)閉和彈起。在網(wǎng)上查了好多資料和事件,總結(jié)下一共有以下幾種方法。


1:在activity 中添加 以下代碼

OnGlobalLayoutListener 注冊后 onGlobalLayout 方法會一直執(zhí)行,處理完自己的邏輯后血要remove

finalView activityRootView = findViewById(R.id.activityRoot);

activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override?

public void onGlobalLayout() {

int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();

if(heightDiff > dpToPx(this,200)) {// 顯示軟鍵盤}else{//隱藏軟鍵盤}

}

});

2:第二種 也是我現(xiàn)在才用的方法

自定義 最外層的 View ,然后重寫 onSizeChanged(int w, int h, int oldw, int oldh)方法。

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

super.onSizeChanged(w,h,oldw,oldh);

if(listener!=null){

if(oldh > h) {

listener.show();

}else{

listener.hidden();

}

}

}

3:第三種方法 自定義 EditText


public class MyEditText extends EditText {

public MyEditText(Context?context)?{

super(context);

}

private OnFinishComposingListener?mFinishComposingListener;

public void setOnFinishComposingListener(OnFinishComposingListener?listener)?{

this.mFinishComposingListener?=?listener;

}

@Override

public InputConnection?onCreateInputConnection(EditorInfo?outAttrs)?{

return newMyInputConnection(super.onCreateInputConnection(outAttrs),false);

}

public class MyInputConnection extends InputConnectionWrapper?{

public MyInputConnection(InputConnection?target,booleanmutable)?{

super(target,?mutable);

}

@Override

public boolean finishComposingText()?{

boolean finishComposing?=super.finishComposingText();

if(mFinishComposingListener?!=null)?{

mFinishComposingListener.finishComposing();

}

returnfinishComposing;

}

}

public interface OnFinishComposingListener?{

public void finishComposing();

}

}

第三種 個人覺得最好用,但是他有個問題就是 在個別三星機器上會彈不出鍵盤。

以上就是自己項目用到總結(jié)的。希望遇到這種問題的同學(xué),可以繞過這個坑。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容