android setVisibility(GONE)不及时刷新的问题

android中需要根据接口返回或者获取完用户登录信息后进行数据刷新的地方很多,基本都会用到view.setVisibility(View,VISIBLE)或者VIEW.GONE来实现界面上的刷新。

然而有些时候或者有些设备上,调用这些方法会有显示异常的问题,具体表现为调用无效或者调用有效,但是控件本身消失但仍占据控件。


之所以有这种情况的原因大致上有两种:

1.控件本身正在执行动画。

2.设备的性能太差,需要重新加载才能显示正常,即需要被回收和重新构造。


解决的方法:

对于原因1:

在控件调用隐藏之前,调用view.clearAnimation();


对于原因2:

可以在调用隐藏方法后,尝试的使用view.invalidate()或者view.postinvalidate();

如果也不行,直接调用自身的requestLayout或者其父容器的requestLayout()进行强制的界面即时刷新重构;

你可能感兴趣的:(android)