Android监听输入法弹窗和关闭的实现方法
用过ios的都知道ios上输入法关闭的同时会自动关闭输入框,那么在android上如何实现监听输入法弹出和关闭呢?本篇文章就为你提供了一种可靠的实现方式。
首先在AndroidManifest中配置
android:windowSoftInputMode="adjustResize"
这样每次输入法弹出和关闭都会重新计算高度实现把布局顶上去的效果
然后我们要自定义一个布局,监听布局大小变化
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中绑定监听事件
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)); }
这样只要输入法弹出和关闭就能自动实现监听,达到关闭输入框的效果,这样就和苹果的体验很一致。 到这里就介绍完了,如果有什么好的思路,也欢迎评论分享点赞! [Github demo地址](https://github.com/gupengcheng/CheckSoftInputDemo)
相关文章
Android 自动判断是电话,网址,EMAIL方法之Linkify的使用
本篇文章小编为大家介绍,在Android中 自动判断是电话,网址,EMAIL方法之Linkify的使用。需要的朋友参考下2013-04-04Android入门教程之RecyclerView的具体使用详解
RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法2021-10-10Android开发之自带下载器DownloadManager的使用示例代码
本篇文章主要介绍了Android开发之自带下载器DownloadManager的使用示例代码,Android自带的DownloadManager是一个很好的下载文件的工具,有兴趣的可以了解一下。2017-03-03Android用PopupWindow实现自定义Dailog
这篇文章主要为大家详细介绍了Android用PopupWindow实现自定义Dailog的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-01-01
最新评论