300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 怎么监听Android软键盘的打开和关闭

怎么监听Android软键盘的打开和关闭

时间:2018-09-12 15:04:01

相关推荐

怎么监听Android软键盘的打开和关闭

这个昨天写了蛮近,太费劲了,目前还没有我觉得比较好的方式去解决。

也查阅了很多朋友的资料和博客,却一直没有完成我需要的效果。

最后无奈使用了下面这个方法:

1 public class InputStateLinearLayout extends LinearLayout{ 2private OnSizeChangedListener listener; 3 4public InputStateLinearLayout(Context context) { 5 super(context); 6} 7 8public InputStateLinearLayout(Context context, AttributeSet attrs) { 9 super(context, attrs);10}11 12public InputStateLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {13 super(context, attrs, defStyleAttr);14}15 16@Override17protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {18 super.onMeasure(widthMeasureSpec, heightMeasureSpec);19}20 21@Override22protected void onLayout(boolean changed, int l, int t, int r, int b) {23 super.onLayout(changed, l, t, r, b);24}25 26@Override27protected void onSizeChanged(int w, int h, int oldw, int oldh) {28 super.onSizeChanged(w, h, oldw, oldh);29 if (listener != null) {30 listener.onSizeChanged(w, h, oldw, oldh);31 }32}33 34public void setOnSizeChangedListener(OnSizeChangedListener listener) {35 this.listener = listener;36}37 38/** * Activity主窗口大小改变时的回调接口(本示例中,等价于软键盘显示隐藏时的回调接口) */39public interface OnSizeChangedListener {40 public void onSizeChanged(int w, int h, int oldw, int oldh);41}42 }

以上代码不多说,继续上代码:

1mRoot.setOnSizeChangedListener(new InputStateLinearLayout.OnSizeChangedListener() {2 @Override3 public void onSizeChanged(int w, int h, int oldw, int oldh) {4 if (h>oldh){//关闭5//你自己需要处理的逻辑6 }7 }8 });

mRoot其实就是这个界面的根布局。自己测试得出,h>oldh是关闭,反之打开。

以上暂时完成了我的需求。

然后当时我还用到了,监听

ViewTreeObserver

虽然也是可以的,但是总归没有达到我的需求。

转载请注明出处!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。