记录某项目中的踩坑与解决(持续更新)
前言
最近参加了某个比赛, 我所选的赛题就是个类似知乎这样的安卓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
记录某项目中的踩坑与解决(持续更新)相关推荐
- native react ssh_React Native踩坑笔记(持续更新中...)
最近发现市场上对React Native开发人员的需求挺多的,自己就想学习一下React Native,多一门技术,好将来买个好价位.嘿嘿! 在学习React Native中碰到了不少坑,再次记录下来 ...
- 【记vue项目中的踩坑日记】一杯茶一包烟,一个bug搞一天
昨天在复习B站coderwhy老师的项目时,偶然发现了一个问题,弄了半天,最后才发现问题出在哪. 封装完底部的导航栏之后实现路由跳转出现了问题,在浏览器中既不报错,也不输出内容,路由跳转也没有用 整了 ...
- unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)
1.error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.Rendering.PostProcessi ...
- 【Linux常见指令】记录一些机器学习中常用的指令(自用,持续更新)
文章目录 前言 一.Conda 创建环境 二.Sudo 命令 1.安装g++/gcc 2.查找文件 3.软连接 三.pip 安装 1.安装requirements.txt 2.清华源安装 四.git ...
- java项目遇到的问题_java系列:项目中遇到的一些问题(持续更新中)
JSONArray去重的问题 JSONArray array = ["2","0","0","0","0&qu ...
- 让你在 API 设计中少踩坑的实战分享
本文来自作者 奔跑吧架构师 在 GitChat 上分享 「让你在 API 设计中少踩坑的实战分享」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 在项目开发中,实际的编码只占用了整个项目不 ...
- Pytorch中Dataloader踩坑:RuntimeError: DataLoader worker (pid(s) 6700, 10620) exited unexpectedly
Pytorch中Dataloader踩坑 环境: 问题背景: 观察报错信息进行分析 根据分析进行修改尝试 总结 环境: 系统:windows10 Pytorch版本:1.5.1+cu101 问题背景: ...
- vue项目中onscroll的坑
vue项目中onscroll的坑 在项目中需要监听一个组件的scroll事件,以触发到底时加载更多. 但是实际操作下来发现scroll事件并没有被监听到. 通过查询资料得知,监听的目标元素elemen ...
- uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法
uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法 因为公司业务需求需要获取监控的摄像头,萤石是给出了几种方案去实现. 直播接入:萤石开放平台API文档 小程序接入:萤石 ...
最新文章
- 企业网络带宽需求和跨地域网络连接的优化
- 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors
- python基础 dict和set
- python autohotkey_PyAutoGUI-python版的autoit/AHK
- [深度学习-实践]Tensorflow 2.x应用ResNet SeNet网络训练cifar10数据集的模型在测试集上准确率 86%-87%,含完整代码
- 如何让用户留在生态系统里?向苹果学习!【转载】
- 泰山OFFICE在LINUX上输入法候选框位置错误的两个解决思路
- cocos判断鼠标点击_面试官:你可以用纯 CSS 判断鼠标进入的方向吗?
- 计算机硬件基础与计算机组装知识总结
- 《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
- vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
- kindle for pc版本更新后无法打开解决办法
- 光子虚拟机_光速虚拟机app下载-光速虚拟机安卓版 v1.1.1 - 安下载
- 人与计算机进行交互的接口,5种新型人机交互技术
- 一个简单的JAVA五子棋
- php怎么获取js值,php 怎么获取JS的值 ,新手折腾几天了 还请大侠赐教
- SpringSecurity系列——密码存储加密策略day7-1(源于官网5.7.2版本)
- 10个常用的数据分析商业模型之SCP分析模型(二)
- 骑行318、 2016.7.16
- 蓝牙定位技术的原理和应用
热门文章
- 【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序
- VirtualBox虚拟机后台运行
- 浅析Node模块中module.exports与exports的关系
- 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
- 第五章:面向对象(上)
- Spring源代码解析(收藏)
- ObjectDataSource使用初步
- sqoop 常见错误以及处理方式
- FreeSWITCH在呼叫失败的情况下如何播放语音提示
- 这些片段在Android编程中很有用 (ZT)