Android監(jiān)聽輸入法彈窗和關閉的實現方法
用過ios的都知道ios上輸入法關閉的同時會自動關閉輸入框,那么在android上如何實現監(jiān)聽輸入法彈出和關閉呢?本篇文章就為你提供了一種可靠的實現方式。
首先在AndroidManifest中配置
android:windowSoftInputMode="adjustResize"
這樣每次輸入法彈出和關閉都會重新計算高度實現把布局頂上去的效果
然后我們要自定義一個布局,監(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; } //如果用戶橫豎屏轉換 if (w != oldw) { return; } if (h < oldh) { //輸入法彈出 } else if (h > oldh) { //輸入法關閉 setCommentViewEnabled(false, false); } int distance = h - old; EventBus.getDefault().post(new InputMethodChangeEvent(distance,mCurrentImageId)); }
這樣只要輸入法彈出和關閉就能自動實現監(jiān)聽,達到關閉輸入框的效果,這樣就和蘋果的體驗很一致。 到這里就介紹完了,如果有什么好的思路,也歡迎評論分享點贊! [Github demo地址](https://github.com/gupengcheng/CheckSoftInputDemo)
相關文章
Android 自動判斷是電話,網址,EMAIL方法之Linkify的使用
本篇文章小編為大家介紹,在Android中 自動判斷是電話,網址,EMAIL方法之Linkify的使用。需要的朋友參考下2013-04-04Android入門教程之RecyclerView的具體使用詳解
RecyclerView是Android一個更強大的控件,其不僅可以實現和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現數據縱向滾動,也可以實現橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法2021-10-10Android開發(fā)之自帶下載器DownloadManager的使用示例代碼
本篇文章主要介紹了Android開發(fā)之自帶下載器DownloadManager的使用示例代碼,Android自帶的DownloadManager是一個很好的下載文件的工具,有興趣的可以了解一下。2017-03-03Android用PopupWindow實現自定義Dailog
這篇文章主要為大家詳細介紹了Android用PopupWindow實現自定義Dailog的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01