博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android监听输入法弹窗的实现
阅读量:7033 次
发布时间:2019-06-28

本文共 1916 字,大约阅读时间需要 6 分钟。

hot3.png

输入法弹出界面

用过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);
@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));}

这样只要输入法弹出和关闭就能自动实现监听,达到关闭输入框的效果,这样就和苹果的体验很一致。 到这里就介绍完了,如果有什么好的思路,也欢迎评论分享点赞! [Github demo地址]()

转载于:https://my.oschina.net/u/990728/blog/787880

你可能感兴趣的文章
redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
查看>>
OpenCV3 for python3 学习笔记2
查看>>
PDF文件可以转换成txt文档吗
查看>>
电脑端与iPad 端如何共享ChemDraw结构
查看>>
MySQL常用命令大全
查看>>
Convert enumeraltor to Dictionary object
查看>>
Linux学习笔记 3 权限篇
查看>>
Android.Tools.Eclipse hangs at the Android SDK Content Loader
查看>>
Android 系统设置中显示设置之屏幕旋转和字体设置篇
查看>>
mysql "Your password has expired...."错误解决方案
查看>>
CentOS6.5配置python开发环境之一:CentOS图形化界面显示
查看>>
.Net Core WebAPI 基于Task的同步&异步编程快速入门
查看>>
mysql数据库的理解
查看>>
12月29日学习内容整理:中间件
查看>>
博客阅读笔记-我们应当怎样做需求分析
查看>>
WIN32错误处理
查看>>
SSH隧道
查看>>
nginx url 重写 [转]
查看>>
P2567 [SCOI2010]幸运数字 DFS+容斥定理
查看>>
J2SE 5.0-memory management whitepaper--delete
查看>>