前言

最近参加了某个比赛, 我所选的赛题就是个类似知乎这样的安卓app,由于着手近一个月了,踩了不少坑,之前没怎么记录,估计事后也会忘记干净。
因此特开一帖,在此记录下相关的坑。

记录


Recyclerview的item显示

写完某个Recyclerview的item布局和相关适配器后, 然后展示的时候, 发现显示出来的Item数量小于List中绑定的数据量;

首先是检查了一遍适配器中的逻辑,发现没啥问题。然后在onCreateViewHolder中打log,发现只创建了两次就没了(而实际应该创建6次)。

最后百度才发现是外面的ScrollView的问题,我这里RecyclerView外套的是我自定义的ScrollView,拦截了子View的滑动事件,因此导致了测量方面的问题。

我换回原生ScrollView,内容就显示完全了。

具体参考 https://www.jianshu.com/p/5c6f9540f9f6


RecyclerView滑动冲突

ScrollView与RecyclerView产生滑动冲突时, 除了某些情况, 尽量不要使用RelaticeLayout嵌套RecyclerView来解决,因为这样的话,RelativeLayout的高度和RecyclerView显示完全的高度一样的,从而导致RecyclerView失去了某些意义, 比如说的它的回收机制,还有它的滑动监听也都无效了。因此比较主流的方式就是使用超级Adapter,即包含多类型的ViewHolder,这里可以考虑使用alibaba的vlayout


Recyclerview嵌套

今天又写了个Recyclerview嵌套多个recyclerview的布局,同样出现了显示不全的问题,然后就是盲目的去改外面那层RecyclerView的相关布局,试了许久仍无果。百度也没找到合适的答案。。最后把整个RecyclerView转移到一个全新activity中调试,发现问题依然存在,这就说明了不是外层布局嵌套存在问题了。于是乎才开始注意内层的RecyclerView,打开显示不全的那个RecyclerView布局文件, 它外面直接套了一层LinearLayout,发现其高为match_parent,才恍然大悟,将其改为wrap_content,于是乎问题便解决了。
这里得出结论:出bug时, 不要对着代码盲目修改,首先应该找到问题所在!


Android resource linking failed

在导入某个别的项目为module的时候,再引入刷新gradle,就出现了 Android resource linking failed 的错误, 也就具体点就是xml里面的某某属性找不到,以前也出现过,多数情况都是版本问题, 我把要导入的项目sdk版本升至和当前项目的相同后, 那个错误就没了。不过,又出现了另外一个错误, 百度介绍说版本问题。。但我使用的gradle最新版本,也不想为此降级,就懒得折腾这个了,索性直接把那个项目相关文件复制过来(好在项目很小)。


点赞放大动画

在实现点赞动画时, view由0.8放大至1.3倍,然而问题出现了:放大时动画被外面的view给挡住了,因此造成的用户体验很差。于是百度得到的答案是在使用动画的view的父布局的父布局加上android:clipChildren="false" 这一条,试了之后发现并没有效果。。。 因为动画还是view的绘制与刷新,所以究其原因是还是子布局不能超出父布局,于是我给点赞图标周围留了一些空, 让其有收缩的空间,这样一来,问题就解决了。


版本大升级

由于考试等原因,项目中间停了一个月左右。回来再次使用已经打包好的项目时,竟然发现了一堆bug,中途我可啥也没修改!查看代码发现有不少未识别的类,想来想去,原因应该只有一个,就是测试机期间从安卓8.0版本升级到了9.0,因此导致出现了一系列的问题。关于那些未识别的类,我先尝试删除项目build目录,无果。然后是修改了下依赖版本,gradle刷新,问题解决。如果新版本适配有问题,可以又换回原版本,再gradle刷新可同样解决。


安卓9.0网络连接问题

安卓9.0后会对http流量进行拦截,即这种明文传输的流量。而加密过的https则可以向之前那样正常工作。解决方案可以参考这篇文章


viewHolder.itemView的点击事件无效

给viewHolder.itemView设置点击事件,无论怎样都无效。折腾一番后,发现是焦点的问题。在该item中的布局文件中,子布局设置了 android:focusable="true" 属性,从而把焦点从根布局中抢走了,导致根布局的itemView点击事件无效。解决办法就是focusable改为false或者去掉该属性即可。


转载于:https://www.cnblogs.com/asche/p/10087079.html

记录某项目中的踩坑与解决(持续更新)相关推荐

  1. native react ssh_React Native踩坑笔记(持续更新中...)

    最近发现市场上对React Native开发人员的需求挺多的,自己就想学习一下React Native,多一门技术,好将来买个好价位.嘿嘿! 在学习React Native中碰到了不少坑,再次记录下来 ...

  2. 【记vue项目中的踩坑日记】一杯茶一包烟,一个bug搞一天

    昨天在复习B站coderwhy老师的项目时,偶然发现了一个问题,弄了半天,最后才发现问题出在哪. 封装完底部的导航栏之后实现路由跳转出现了问题,在浏览器中既不报错,也不输出内容,路由跳转也没有用 整了 ...

  3. unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)

    1.error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.Rendering.PostProcessi ...

  4. 【Linux常见指令】记录一些机器学习中常用的指令(自用,持续更新)

    文章目录 前言 一.Conda 创建环境 二.Sudo 命令 1.安装g++/gcc 2.查找文件 3.软连接 三.pip 安装 1.安装requirements.txt 2.清华源安装 四.git ...

  5. java项目遇到的问题_java系列:项目中遇到的一些问题(持续更新中)

    JSONArray去重的问题 JSONArray array = ["2","0","0","0","0&qu ...

  6. 让你在 API 设计中少踩坑的实战分享

    本文来自作者 奔跑吧架构师 在 GitChat 上分享 「让你在 API 设计中少踩坑的实战分享」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 在项目开发中,实际的编码只占用了整个项目不 ...

  7. Pytorch中Dataloader踩坑:RuntimeError: DataLoader worker (pid(s) 6700, 10620) exited unexpectedly

    Pytorch中Dataloader踩坑 环境: 问题背景: 观察报错信息进行分析 根据分析进行修改尝试 总结 环境: 系统:windows10 Pytorch版本:1.5.1+cu101 问题背景: ...

  8. vue项目中onscroll的坑

    vue项目中onscroll的坑 在项目中需要监听一个组件的scroll事件,以触发到底时加载更多. 但是实际操作下来发现scroll事件并没有被监听到. 通过查询资料得知,监听的目标元素elemen ...

  9. uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法

    uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法 因为公司业务需求需要获取监控的摄像头,萤石是给出了几种方案去实现. 直播接入:萤石开放平台API文档 小程序接入:萤石 ...

最新文章

  1. 企业网络带宽需求和跨地域网络连接的优化
  2. 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors
  3. python基础 dict和set
  4. python autohotkey_PyAutoGUI-python版的autoit/AHK
  5. [深度学习-实践]Tensorflow 2.x应用ResNet SeNet网络训练cifar10数据集的模型在测试集上准确率 86%-87%,含完整代码
  6. 如何让用户留在生态系统里?向苹果学习!【转载】
  7. 泰山OFFICE在LINUX上输入法候选框位置错误的两个解决思路
  8. cocos判断鼠标点击_面试官:你可以用纯 CSS 判断鼠标进入的方向吗?
  9. 计算机硬件基础与计算机组装知识总结
  10. 《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
  11. vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
  12. kindle for pc版本更新后无法打开解决办法
  13. 光子虚拟机_光速虚拟机app下载-光速虚拟机安卓版 v1.1.1 - 安下载
  14. 人与计算机进行交互的接口,5种新型人机交互技术
  15. 一个简单的JAVA五子棋
  16. php怎么获取js值,php 怎么获取JS的值 ,新手折腾几天了 还请大侠赐教
  17. SpringSecurity系列——密码存储加密策略day7-1(源于官网5.7.2版本)
  18. 10个常用的数据分析商业模型之SCP分析模型(二)
  19. 骑行318、 2016.7.16
  20. 蓝牙定位技术的原理和应用

热门文章

  1. 【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序
  2. VirtualBox虚拟机后台运行
  3. 浅析Node模块中module.exports与exports的关系
  4. 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
  5. 第五章:面向对象(上)
  6. Spring源代码解析(收藏)
  7. ObjectDataSource使用初步
  8. sqoop 常见错误以及处理方式
  9. FreeSWITCH在呼叫失败的情况下如何播放语音提示
  10. 这些片段在Android编程中很有用 (ZT)