网上介绍过监听键盘是否弹出的方法,我自己也是尝试过,不是很好用,今天发现了一种比较好的监听键盘是否弹出的方法,用起来十分简单,同时也可以通过此方法获取到键盘的高度
//如何获取软键盘的高度 final RelativeLayout et = (RelativeLayout)findViewById(R.id.rootview); et.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ //当键盘弹出隐藏的时候会 调用此方法。 @Override public void onGlobalLayout() { Rect r = new Rect(); //获取当前界面可视部分 MainActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); //获取屏幕的高度 int screenHeight = MainActivity.this.getWindow().getDecorView().getRootView().getHeight(); //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数 int heightDifference = screenHeight - r.bottom; Log.d("Keyboard Size", "Size: " + heightDifference); } });
使用起来很简单只需判断键盘高度是否为0 就可以知道键盘是否弹出了。
getDecorView() 获取的是整个应用的view 包括标题栏,但是不包括状态栏,r.top就是状态栏的高度。
相关推荐
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
android中监听软键盘的弹出与隐藏,并获取软键盘的高度,在adjustPan,adjustResize,adjustUnspecified下都可以
android 监听软键盘状态(弹起还是收起),你懂的,没有现成的方法,通过跟布局的高度判断。
通过重写onLayout方法,判断软键盘是否弹出。判断到键盘是否弹出后,就可以做自己想做的事情了。
近乎完美的监听软键盘的弹出与收起的
3种方法实现软键盘监听的,种有一款适合你
网上搜到很多关于这方面的介绍,最流行的就是在压缩模式下通过监听onLayout()函数来实现的监听,这种方法可能不适合希望在软键盘弹出时控件平移而非压缩需求的开发者,因此,我们的需求就是在符合任意控件在软键盘...
指定android:windowSoftInputMode=”adjustResize|stateAlwaysHidden”这个的做法是为了让键盘弹出时改变布局。 让Activity实现LayoutchangeListener,监听布局的改变,当布局发生的改变为屏幕的1/3时我们认为是...
在软键盘弹出后随即弹出自定义的PopuWindow在其上方,里面还给PopuWindow加入了显示 和消失的动画,另外实现了对软键盘显示和隐藏状态的监听,以及对其高度的测量,需要做些逻辑处理的话可以直接在里面写相关的代码...
根据addOnGlobalLayoutListener 来监听判断软键盘是否弹出
代码来源: 从facebook React源码ReactRootView中抽离CustomGlobalLayoutListener,用于监听Android系统软键盘的弹出与关闭。 ...软键盘弹出和关闭时,可同时回调 keyboardHeight 软键盘的高度值。
情境:布局文件中有ScrollView,ScrollView中有个EditView,布局底部有一个控件(见下面布局代码),程序一启动EditView就获取焦点,弹出软键盘,将这个底部的控件也顶上去了,感觉不太好,所以我就想监听下软键盘弹...
监听软键盘弹出改变布局demo
在edittext里监听软键盘弹出与退出。很有效的。
监听安卓输入法的弹起和隐藏,适配到2.3
主要介绍了Android WebView无法弹出软键盘的原因及解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
问题: 今天公司项目处理一个软键盘弹出的逻辑,...//弹出软键盘 InputMethodManager imm = (InputMethodManager) editText.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(edi