直播聊天室遇到的坑

先上图:


Paste_Image.png

如上图所示,上面是视频展示,下面是三个模块,来回可以切换。
一开始坑就来了,因为我主做聊天模块,就把下面的输入框放在 Fragment 里面了。本人的手机是红米2增强版是带有实体返回键的,做的差不多了,在我的手机上测试没问题。但是到了提测时候,公司还有一部魅族的虚拟返回按键手机,在上面展示的时候输入框就被遮住了显示不出来。如下图所示:

Paste_Image.png

打开斗鱼的 APP 参考一下看人家是怎么做的,发现斗鱼装在这个手机上的时候,输入框是盖在如下图红框位置上的。


Paste_Image.png

原先放的是 Fragment 里面最高也不会超过如图中的红框部分,很显然这个输入框是放在外面的 Activity 中的。

以后遇到这样的情况切记:一定把输入框放到activity 里面,不要放在 Fragment 中

输入框布局如下:

Paste_Image.png

从左往右依次是 TextView Imageview Imageview,
在移动输入框到 Activity 的过程中发现,TextView 获取不到,而另外两个 ImageView 的点击事件没问题。
项目重新 rebuild 也无计于事,折腾了好久,最后在老大的建议下
修改 TextView 布局中的 XML的 id,重新设置没问题了。
** 应该是项目中的 id 有重复的,导致了获取出问题,以后遇到这种问题可以照此法尝试解决**

聊天的时候有如下要求,当聊天到底的时候试试刷新聊天列表,如果手动上推聊天信息列表展示以前发来的消息,这时候如果有新消息到来就会展示如下图红框内容,点击红框,列表滑到最底端,红框消失,当手拉消息列表到最底部是红框也消失。


Paste_Image.png

一开始我的做法就是设置 listView 的滑动监听,判断是否在最底端,在最底端时来消息的时候就调用 adapter 的notifyDataSetChanged()方法。不在底端时,就只是添加消息到数据源,直到点击或者再次上拉到底的时候一次性调用notifyDataSetChanged()方法来执行。
但是这种方式总是报崩溃,出现如下 bug:

The content of the adapter has changed but ListView did not receive a 
notification. Make sure the content of your adapter is not modified 
from a background thread, but only from the UI thread. Make sure 
your adapter calls notifyDataSetChanged() when its content changes.

上网查询,基本上大意就是 adapter 的数据与现在内存实际数据不匹配,出现了这个问题,很是纠结啊。折腾了许久,咨询了老大,说listView 有个属性可以控制是否是实时刷新还是不刷新,遂查找之,发现如下属性:

android:transcriptMode="alwaysScroll"

就是此来控制聊天列表的实时刷新还是暂停不动。因为这是基于业务来灵活控制的,需要在代码中灵活处理而不是直接在XML 布局文件中写死,代码如下:

//界面实时滚动
chatListView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
//界面保持不动
chatListView.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);

剩下的就是自己在代码中灵活运用了

前车之鉴,以后大家在项目中遇到类似问题也能节省点时间吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,076评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 47,242评论 22 665
  • 昨天的早上,我正在面对一场艰难的考试,为此我做了认真的准备,即使如此我依旧忐忑不安,对结果充满了担心。面试时,我回...
    刘piano阅读 225评论 0 0
  • 有人把流年错落成诗, 或许他们感情太真挚。 你我的故事, 有些固执。 坐落在南边的小镇, 是彼此的开始。 我们的缘...
    清柠学姐阅读 468评论 5 21
  • 最近看了很多励志的文章,几乎每一篇都说到通向成功的道路其实并不拥挤,只要你努力再努力就行了。其实说真的,努力并没有...
    二更漫阅阅读 6,145评论 61 171

友情链接更多精彩内容