@ltlovezh
2017-10-15T16:55:25.000000Z
字数 784
阅读 1479
Android踩坑集
曾经遇到一个布局的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后,但是没有被重新布局。
support-24包中,ViewPager在调用destroyItem时,如果item是Fragment,则会调用Fragment的onDestroy()。但是Fragment并没有被回收,当Tab切回来时还是会被使用。所以需要特别注意,在Fragment的onDestroy()方法中执行的逻辑是否会被这个特性影响。
在用XML写Drawable的时候,如果是只有边框的按钮类型,不要只写边框色,要把填充色也加上。三星9100机型下面,如果不写填充色,系统会默认把填充色设置成黑色。