[关闭]
@ltlovezh 2017-10-15T16:55:25.000000Z 字数 784 阅读 1464

Android踩坑集

Android踩坑集


View布局问题

曾经遇到一个布局的bug,后续遇到调用requestLayout后,没有重新布局的问题时,可以参考下:

在父ViewGroup A的onLayout期间,若间接触发了子View B的RequestLayout方法,子view B将不会被重新布局。因为RequestLayout无法传递到父ViewGroup A,因为父VieWGroup A 还没有布局完成,此时还有PFLAG_FORCE_LAYOUT标志位,导致子View B的RequestLayout无法继续向上传递到父ViewGroup A。但是子View B的PFLAG_FORCE_LAYOUT标志位已经打上了。

这会导致严重的问题:若子View B的子View C,调用了RequestLayout,因为子View B拥有PFLAG_FORCE_LAYOUT标志位,导致子View C的RequestLayout方法也无法向上传递到子View B,也就无法正常到达顶层的ViewRootImpl了。最直观的现象就是:子View C调用RequestLayout后,但是没有被重新布局。

ViewPager Fragment

support-24包中,ViewPager在调用destroyItem时,如果item是Fragment,则会调用Fragment的onDestroy()。但是Fragment并没有被回收,当Tab切回来时还是会被使用。所以需要特别注意,在Fragment的onDestroy()方法中执行的逻辑是否会被这个特性影响。

自定义Drawable兼容性问题

在用XML写Drawable的时候,如果是只有边框的按钮类型,不要只写边框色,要把填充色也加上。三星9100机型下面,如果不写填充色,系统会默认把填充色设置成黑色。

五年Android开发,让我“刻骨铭心”的那些坑

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注