安卓开发——如何判断软键盘是否弹出(显示)
来源:互联网 发布:浙大网络线怎么用 mac 编辑:程序博客网 时间:2024/06/05 17:51
在开发中涉及到了如下情况:表情界面与软键盘只显示其一,与当前主流社交软件的逻辑一致。
这时就需要根据情况获取当前软键盘是否处于弹出状态,网上搜了搜,都是一些拷贝来拷贝去的无用办法,如:
1、
if(getWindow().getAttributes().softInputMode == WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE){ Toast.makeText(Main3Activity.this, "显示", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(Main3Activity.this, "没显示", Toast.LENGTH_SHORT).show(); }
无卵用。
2、
if(inputMethodManager.isActive(editText)){ Toast.makeText(Main3Activity.this, "显示", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(Main3Activity.this, "没显示", Toast.LENGTH_SHORT).show(); }这个办法弊病在于只要editText有焦点,就一直是true,然而并不是editText获得焦点键盘就会弹出。无卵用。
由于谷歌官方并没有提供与判断软键盘是否弹出的相关方法,只能通过计算布局高度来解决:
private boolean isSoftShowing() { //获取当前屏幕内容的高度 int screenHeight = getWindow().getDecorView().getHeight(); //获取View可见区域的bottom Rect rect = new Rect(); //DecorView即为activity的顶级view getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); //考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度) //选取screenHeight*2/3进行判断 return screenHeight*2/3 > rect.bottom; }这里面用了一个巧方法,就是选取屏幕高度的2/3来判断,如果你觉得这个不靠谱的话,也可以获取到虚拟导航栏的高度,进行相应判断。
附上获取导航栏的方法:
/** * 底部虚拟按键栏的高度 * @return */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private int getSoftButtonsBarHeight() { DisplayMetrics metrics = new DisplayMetrics(); //这个方法获取可能不是真实屏幕的高度 mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableHeight = metrics.heightPixels; //获取当前屏幕的真实高度 mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; if (realHeight > usableHeight) { return realHeight - usableHeight; } else { return 0; } }
阅读全文
0 0
- 安卓开发——如何判断软键盘是否弹出(显示)
- Android软键盘(五)如何判断软键盘是否显示
- 安卓开发笔记二——软键盘弹出不遮挡布局的策略
- Andoird 判断软键盘是否弹出
- js判断手机是否弹出软键盘
- android 判断软键盘是否弹出
- 安卓开发——对EditText修改软键盘上“回车键”的显示信息
- 怎么判断软键盘是否显示
- 如何监听显示安卓软键盘事件
- js判断手机端是否弹出软键盘
- 安卓开发如何判断EditText是否有输入?
- 安卓开发-软键盘
- 安卓软键盘无法弹出,安卓无法弹出软键盘
- 软键盘1—如何隐藏和显示软键盘
- kotlin 在安卓开发时 软键盘自动弹出的尝试
- 判断软键盘的弹出
- 安卓开发中判断是否联网
- 安卓实现弹出软键盘屏幕自适应调整
- 【SpringData】轻松愉快之玩转SpringData( 第2章 使用传统方式访问数据库
- 数据结构实验之查找四:二分查找
- 信息检索导论笔记之1--3章
- Mapreduce与Yarn 原理分析
- (十七)文件类
- 安卓开发——如何判断软键盘是否弹出(显示)
- hiho182
- 移动端H5填坑指南
- n个数里最小的k个
- mysql优化之表的设计
- 【软工】黑白盒
- Linux到底是什么,它是怎么诞生的,它的诞生有怎样的意义!
- 数据结构实验之排序六:希尔排序
- Android中涉及到的Groovy语法