我正在使用此表单在Android上开发应用程序:
<ScrollView>
<RelativeLayout>
<TextView/>
<RelativeLayout>
....
</RelativeLayout>
<gridLayout>
7 CheckBoxes
1 ImageButton
</gridLayout>
<LinearLayout>
many TextViews
</LinearLayout>
</RelativeLayout>
</ScrollView>
ImageButton
内的gridLayout
控制某些复选框消失后(VISIBILITY->GONE
)以及当它被按下时(ImageButton)LinearLayout
,它位于其下方(gridLayout),在gridLayout
采用最终形式之前重叠。见下图:
[1]:https://i.stack.imgur.com/K6aSc.png这是在失踪之前。
[2]:https://i.stack.imgur.com/nHqpj.png这种情况发生在消失期间。
编辑:问题发生是因为View.GONE
需要一些时间才能直观地执行,但gridLayout
明白它会立即发生,因此保留“空”空间马上。只想我能搞清楚,就是设置View.INVISIBLE
而是手动调整gridLayout
的大小。还有更好的方法吗?
EDIT2 问题是由animateLayoutChanges="true"
引起的。由于动画,checkBoxes消失需要一些时间。有没有办法强制linearLayout“等待”动画效果结束?
有什么想法吗?
答案 0 :(得分:0)
您可以为动画更改添加一个监听器animateLayoutChanges =&#34; true&#34;并在动画结束时移动LinearLayout。此主题中的更多信息 - Listner
此外,您可以在复选框上尝试setAlpha(0)
和setEnabled(false)
的组合,在这种情况下,gridLayout不会再次调整视图。