Android View显示不出来、显示不全问题集锦,附各种调试工具
新手入门,都会接触不少自定义View的需求,在进行自定义View的开发中,因为编程不规范,思考不完备总会踩各种坑,写代码一时爽,调bug火葬场,一运行APP,就会碰到View不显示,View显示不全,甚至直接crash。这里结合我在工作中遇到的一些实际问题,进行一下自我总结,也帮助开发者调试代码时进行查阅。
View不显示是有着多种多样的原因,就像引起人体头痛的原因也是多种多样的。
- 查看View和父容器的visibility是否在xml或代码中被设置为gone、invisible。
- 查看父容器的宽高是否被设置为0,或者其他同一层级的View使用了match_parent、指定了很大的宽高挤压了当前View或其父View。特别注意: 使用RelativeLayout、ConstraintLayout等相对布局时,需要考虑当前View或其父View是被“安排”到了屏幕外边。使用LinearLayout需要主要weight属性,是不是其他View挤走了当前View或其父View。
- View初始化的时候,没有attatch到父View上 。
- View没有正确的塞数据,只有个空容器。
- 是否使用了动画移出屏幕外、设置了aplha值、跟背景色融合为一体了。
- U不展示,耐心是修复bug解决问题的前提。很多时候,我们调试好久,发现就是某个地方引用错了变量,导错了包。。。保持写完代码再过一遍的习惯,可以有效节省开发时间,避免许多bug。
工欲善其事必先利其器,在调试代码之前,首先我们需要事半功倍的调试利器,推荐以下几种工具
- 开发助手APP,如图1
- 图1
个人的最爱,使用“布局查看”功能,可以方便的调试页面元素。这个APP最大的好处是无需root兼容性好,但是是个付费App,Android开发者强烈安利。如图2,展示了调试知乎APP的Ui,可以方便的查看宽高、可见度、父子布局等信息。 - 图2
- Android Studio自带的Layout Inspecter,在编译器右下角,位置如右图3。示意效果如图4。 可以方便查看布局信息,各个View的状态,大小,信息齐全。
- 图3
- 图4
- UiAutomatorViewer,SDK带的工具,位于Android SDK的目录下,\sdk\tools\bin\uiautomatorviewer。
此处应有图,但是我的💻这个工具有问题,很少用它 - 如果是webView调试,强烈安利chrome的DevTool,在网址栏输入 chrome://inspect/#devices,如图5。可以直接在chrome中打开,甚至可以直接在 console中输入命令,调用前端的方法。