用过ios的都知道ios上输入法关闭的同时会自动关闭输入框,那么在androID上如何实现监听输入法d出和关闭呢?本篇文章就为你提供了一种可靠的实现方式。
演示效果视频地址
首先在AndroIDManifest中配置
androID:windowsoftinputMode="adjustResize"
这样每次输入法d出和关闭都会重新计算高度实现把布局顶上去的效果
然后我们要自定义一个布局,监听布局大小变化
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,intdefStyleAttr,int defStyleRes) {super(context,defStyleAttr,defStyleRes);}@OverrIDeprotected voID onSizeChanged(int w,int h,int olDW,int oldh) {super.onSizeChanged(w,h,olDW,old);if (mOnResizeListener != null) {mOnResizeListener.onResize(w,old);}}public voID setonResizeListener(OnResizeListener Listener) { this.mOnResizeListener = Listener;}public interface OnResizeListener {voID onResize(int w,int old);}}
然后把上面的自定义布局作为跟布局放到你需要的Activity中去,然后在Activity中绑定监听事件
mRootLayout.setonResizeListener(this);@OverrIDepublic voID onResize(int w,int oldh) {//如果第一次初始化if (oldh == 0) {return;}//如果用户横竖屏转换if (w != olDW) {return;}if (h < oldh) {//输入法d出} else if (h > oldh) {//输入法关闭setCommentVIEwEnabled(false,false);}int distance = h - old;EventBus.getDefault().post(new inputMethodChangeEvent(distance,mCurrentimageID));}
这样只要输入法d出和关闭就能自动实现监听,达到关闭输入框的效果,这样就和苹果的体验很一致。 到这里就介绍完了,如果有什么好的思路,也欢迎评论分享点赞! [Github demo地址](https://github.com/gupengcheng/CheckSoftinputDemo)
总结以上是内存溢出为你收集整理的Android监听输入法d窗和关闭的实现方法全部内容,希望文章能够帮你解决Android监听输入法d窗和关闭的实现方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)