怎么监听Android软键盘的打开和关闭
2015-09-22 15:51
441 查看
这个昨天写了蛮近,太费劲了,目前还没有我觉得比较好的方式去解决。
也查阅了很多朋友的资料和博客,却一直没有完成我需要的效果。
最后无奈使用了下面这个方法:
以上代码不多说,继续上代码:
mRoot其实就是这个界面的根布局。自己测试得出,h>oldh是关闭,反之打开。
以上暂时完成了我的需求。
然后当时我还用到了,监听
也查阅了很多朋友的资料和博客,却一直没有完成我需要的效果。
最后无奈使用了下面这个方法:
public class InputStateLinearLayout extends LinearLayout{ private OnSizeChangedListener listener; public InputStateLinearLayout(Context context) { super(context); } public InputStateLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } public InputStateLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (listener != null) { listener.onSizeChanged(w, h, oldw, oldh); } } public void setOnSizeChangedListener(OnSizeChangedListener listener) { this.listener = listener; } /** * Activity主窗口大小改变时的回调接口(本示例中,等价于软键盘显示隐藏时的回调接口) */ public interface OnSizeChangedListener { public void onSizeChanged(int w, int h, int oldw, int oldh); } }
以上代码不多说,继续上代码:
mRoot.setOnSizeChangedListener(new InputStateLinearLayout.OnSizeChangedListener() { @Override public void onSizeChanged(int w, int h, int oldw, int oldh) { if (h>oldh){//关闭 //你自己需要处理的逻辑 } } });
mRoot其实就是这个界面的根布局。自己测试得出,h>oldh是关闭,反之打开。
以上暂时完成了我的需求。
然后当时我还用到了,监听
ViewTreeObserver 虽然也是可以的,但是总归没有达到我的需求。 转载请注明出处!
相关文章推荐
- Android之RadioButton多行
- Android samples API Demos之UI篇1(ActionBarCompat-ListPopupMenu)
- android 得到连接热点的ip的方法
- Android基础入门教程——2.4.5 ListView之checkbox错位问题解决
- android4.4以上,实现状态栏颜色设置
- 仿Android5.0 Heads-Up风格的Toast提示
- Android的Handler总结
- AndroidAnnotations常用标记
- android布局及属性
- Android Fragment 真正的完全解析(下)
- Android5.1--电源管理之省电模式分析
- Android Fragment 真正的完全解析(上)
- Android 入门——项目结构目录、文件详解
- Crazy Android书中属性动画实例的完整代码及问题
- Android ffmpeg编译
- Android-项目中的XML协议封装
- Android 使用日常
- Android apk 签名
- Android手势密码
- android inflater 用法