当前位置: 首页 > 编程笔记 >

Android监听输入法弹窗和关闭的实现方法

臧增
2023-03-14
本文向大家介绍Android监听输入法弹窗和关闭的实现方法,包括了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)

 类似资料:
  • 本文向大家介绍vuejs中监听窗口关闭和窗口刷新事件的方法,包括了vuejs中监听窗口关闭和窗口刷新事件的方法的使用技巧和注意事项,需要的朋友参考一下 1、使用window.onunload之类的API 2、在生命周期钩子中注册监听事件 在 mounted 钩子中注册事件 在 destroyed 钩子卸载事件 以上这篇vuejs中监听窗口关闭和窗口刷新事件的方法就是小编分享给大家的全部内容了,希望

  • 本文向大家介绍全面解析Android中对EditText输入实现监听的方法,包括了全面解析Android中对EditText输入实现监听的方法的使用技巧和注意事项,需要的朋友参考一下 在 Android design support 包中提供了一种在输入不合适字符时一直显示的提示方式来显示,现在已经开始在更多的应用上被使用了;这些 Android app 在显示他们的错误提示时采用的不同的方式常常

  • 本文向大家介绍Android监听来电和去电的实现方法,包括了Android监听来电和去电的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android监听来电和去电的实现方法。分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastReceiver 第二步:在AndroidManifest.xml

  • 本文向大家介绍c# 实现子窗口关闭父窗口也关闭的方法,包括了c# 实现子窗口关闭父窗口也关闭的方法的使用技巧和注意事项,需要的朋友参考一下 其实是窗口间通讯的问题,在form1上打开form2 ,form2 关闭时关闭form1 实现方法: 在子窗口form2中声明事件: 然后在它的关闭事件中触发本事件: 在父窗口form1中(比如登陆窗口中): 然后弹出子form2窗体的地方这样写: 以上这篇c

  • 本文向大家介绍JS+CSS实现带关闭按钮DIV弹出窗口的方法,包括了JS+CSS实现带关闭按钮DIV弹出窗口的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS+CSS实现带关闭按钮DIV弹出窗口的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍Android实现静态广播监听器的方法,包括了Android实现静态广播监听器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现静态广播监听器的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Android程序设计有所帮助。