postInvalidate 解决View.GONE,没有刷新的问题

问题描述:
布局:

<ScrollView id="scroll">
<LinearLayout id="container">
       <LinearLayout  id="child1">

</LinearLayout>
       <LinearLayout  id="child2">

</LinearLayout>
      <LinearLayout  id="child3">

</LinearLayout>

</LinearLayout>
</ScrollView>

当 id="child3" View.GONE 时,child2会自动移到最顶部,并且全屏显示出来,但是child3还在,其实已不在了,只是没有刷新过来。

尝试1:
container.requestLayout();
container.postInvalidate();

  不行。

尝试2:
child3.clearAnimation();

不行。因为这里面用了一个控件,显示是有一个动画的,会不会是这个引起的。


尝试3:

scroll.postInvalidate();

  成功。这行代码,加到原来setVisibility(View.GONE); 下面一行就可以了。

  

原文地址:https://www.cnblogs.com/jiduoduo/p/12356540.html