腾讯互动直播1.8解决软键盘覆盖输入框和监听软键盘弹出关闭
来源:互联网 发布:2017诱导充值网站源码 编辑:程序博客网 时间:2024/05/29 09:44
腾讯云互动直播1.8的demo 上面,在直播界面软键盘会覆盖输入框,起初的想法是 动态设置输入框 dialog 的位置,但是在demo 上修改之后,在小米,魅族,华为等机器上是可以解决覆盖的问题,但是在三星的机器上还是存在覆盖的问题。有人可能遇到解决覆盖问题了,但是监听软键盘失效了。就是关闭软键盘dialog 没有关闭。下面就是我的解决方案,先上图:
问题1:软键盘覆盖dialog
在 setContentView 之前添加
//防止软键盘遮挡住Dialog的输入框
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
即可解决软键盘覆盖的问题;
问题2:当输入框弹出后点击空白处关闭软键盘和dialog
1.将dialog 的根布局改为 match_parent
2.除去 旧代码中的 对根布局的位置的监听,增加 根布局 onTouch的监听事件
问题3:关闭输入框或者按返回键 dialog 未关闭
按照1,2 步骤完成之后,发现 关闭输入框或者按返回键 dialog 未关闭,会出现在 屏幕的底部,此时就需要监听 根布局 GlobalLayout的事件
在activity_live.xml 布局中发现最上层的布局是
<include android:id="@+id/invite_views" layout="@layout/invite_views" android:layout_width="wrap_content" android:layout_height="fill_parent" />
此时 对该布局 做监听事件就可以了 ;
注意 :OnGlobalLayoutListener 响应 的条件是 :
SoftInputMode 是 ADJUST_RESIZE,不然是无法监听到位置的改变的。
//软键盘的监听 findViewById(R.id.invite_views).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); //获取当前界面可视部分 getWindow().getDecorView().getWindowVisibleDisplayFrame(r); //获取屏幕的高度 int screenHeight = getWindow().getDecorView().getRootView().getHeight(); //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数 int heightDifference = screenHeight - r.bottom; if(heightDifference <= 0 && mLastDiff > 0){ //软键盘收起状态 Log.d("AAAA","软键盘 弹出之后收起了 Rect GlobalLayoutListener heightDifference="+heightDifference+",mLastDiff="+mLastDiff); if(inputMsgDialog!=null && inputMsgDialog.isShowing()){ inputMsgDialog.dismiss(); } } mLastDiff = heightDifference; } });
至此,上述问题应该解决了。
- 腾讯互动直播1.8解决软键盘覆盖输入框和监听软键盘弹出关闭
- Android 软键盘弹出与关闭监听
- android软键盘弹出关闭监听
- 监听软键盘的隐藏和弹出
- 监听软键盘的收起和弹出
- 软键盘隐藏和弹出的监听
- 监听软键盘 高度和关闭状态
- Android 软键盘自动弹出和关闭
- 关于点击某个按钮需要Edittext和软键盘一起弹出的操作和监听软键盘的关闭
- Android 监听软键盘弹出
- 监听android软键盘弹出或者关闭的方法
- 监听软键盘 弹起 关闭
- android监听软键盘输入@
- Android 软键盘弹出,遮住输入框
- Android在Fragment中监听软键盘的弹出和关闭
- Android: 解决软键盘弹出覆盖界面问题
- android 监听软键盘弹出和隐藏和4.4系统沉浸式通知栏冲突解决
- 软键盘的弹出隐藏监听及软键盘高度
- 海明码之编码方法
- 关于对linux运维工程师岗位疑惑问题的答疑 笔记记录
- 二分查找和递归的二分查找
- 在Bluemix 使用OpenWhisk and AlchemyAPI 开发人脸辨识应用系统
- Guava functional -- Function
- 腾讯互动直播1.8解决软键盘覆盖输入框和监听软键盘弹出关闭
- input file onchange 不起作用的解决办法
- 设计模式六大原则
- android 活动与服务进行通讯(服务(Service)一)
- List<Map<String,Object>>取值知识点
- JAVA学习总结十八
- java-Linux下的jdk
- 三伏与三九
- CentOS下部署javaWeb项目