我的ScrollView
包含LinearLayout
。
在代码中,我将项目添加到LinearLayout
,并且可以很好地扩展。
当我在代码中移除LinearLayout
中的所有项目时,LinearLayout
保持相同的大小,但它是空的。
我如何获得ScrollView
reclaim the height
时LinearLayout
使用的项目,并缩小LinearLayout以使用最小的高度,因为它现在是空的?
我试过(在C#中):
linearLayout.RemoveAllViewsInLayout();
linearLayout.PostInvalidate();
scrollView.PostInvalidate();
Java或C#答案很好。
答案 0 :(得分:2)
我只有Java的Java经验,所以我会尝试使用:
linearLayout.requestLayout();
这会导致另一个布局传递,并假设LinearLayout
设置为WRAP_CONTENT
,它将测量所有子项并调整其大小以适应子项占用的最小空间(或{{1}如果你有那个集合并且它更大)。
答案 1 :(得分:0)
这个技巧似乎有效。结果是线性布局ID重新调整大小和滚动视图:
linearLayout.RemoveAllViewsInLayout();
linearLayout.Visibility = ViewStates.Gone;
scrollView.SmoothScrollTo(0, 0);
linearLayout.Visibility = ViewStates.Visible;
必须有更好的方法,但这有效。