市面上除了IOS之外,还有安卓系统,目前相信大家都知道IOS上的输入方法已经关闭了,本文是武林技术频道介绍的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, intdefStyleAttr, int defStyleRes) {super(context, attrs, 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, 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);@Overridepublic 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));}
看了武林技术频道的介绍,想必大家已经知道了Android监听输入法弹窗和关闭的实现方法,程序员可以按照上述方法进行参考。
新闻热点
疑难解答