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); 下面一行就可以了。
道法自然