Android監(jiān)聽輸入法彈窗和關(guān)閉的實現(xiàn)方法

用過ios的都知道ios上輸入法關(guān)閉的同時會自動關(guān)閉輸入框,那么在android上如何實現(xiàn)監(jiān)聽輸入法彈出和關(guān)閉呢?本篇文章就為你提供了一種可靠的實現(xiàn)方式。
首先在AndroidManifest中配置
android:windowSoftInputMode="adjustResize"
這樣每次輸入法彈出和關(guān)閉都會重新計算高度實現(xiàn)把布局頂上去的效果
然后我們要自定義一個布局,監(jiān)聽布局大小變化
public class CheckSoftInputLayout extends FrameLayout {
private OnResizeListener mOnResizeListener;
public CheckSoftInputLayout(Context context) {
super(context);
}
public CheckSoftInputLayout(Context context, AttributeSet attrs) {
super(context, attires);
}
public CheckSoftInputLayout(Context context, AttributeSet attrs, int
defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(21)
public CheckSoftInputLayout(Context context, AttributeSet attrs, int
defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, old);
if (mOnResizeListener != null) {
mOnResizeListener.onResize(w, h, oldw, old);
}
}
public void setOnResizeListener(OnResizeListener listener) {
this.mOnResizeListener = listener;
}
public interface OnResizeListener {
void onResize(int w, int h, int oldw, int old);
}
}
然后把上面的自定義布局作為跟布局放到你需要的Activity中去,然后在Activity中綁定監(jiān)聽事件
mRootLayout.setOnResizeListener(this);
@Override
public void onResize(int w, int h, int oldw, int oldh) {
//如果第一次初始化
if (oldh == 0) {
return;
}
//如果用戶橫豎屏轉(zhuǎn)換
if (w != oldw) {
return;
}
if (h < oldh) {
//輸入法彈出
} else if (h > oldh) {
//輸入法關(guān)閉
setCommentViewEnabled(false, false);
}
int distance = h - old;
EventBus.getDefault().post(new InputMethodChangeEvent(distance,mCurrentImageId));
}
這樣只要輸入法彈出和關(guān)閉就能自動實現(xiàn)監(jiān)聽,達到關(guān)閉輸入框的效果,這樣就和蘋果的體驗很一致。 到這里就介紹完了,如果有什么好的思路,也歡迎評論分享點贊! [Github demo地址](https://github.com/gupengcheng/CheckSoftInputDemo)
相關(guān)文章
Android開發(fā)中實現(xiàn)IOS風格底部選擇器(支持時間 日期 自定義)
這篇文章主要介紹了Android開發(fā)中實現(xiàn)IOS風格底部選擇器(支持時間 日期 自定義)的相關(guān)資料,需要的朋友可以參考下2016-11-11
Android6.0編程實現(xiàn)雙向通話自動錄音功能的方法詳解
這篇文章主要介紹了Android6.0編程實現(xiàn)雙向通話自動錄音功能的方法,結(jié)合實例形式分析了Android錄音功能的原理、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下2017-07-07
SpringBoot實現(xiàn)短信驗證碼登錄功能(案例)
這篇文章主要介紹了SpringBoot實現(xiàn)短信驗證碼登錄功能,本文通過實例代碼給大家介紹的非常詳細,對大家大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-08-08

