Android:视图中的RemoveAllItems不刷新大小

时间:2012-06-11 20:05:32

标签: android scrollview xamarin.android android-linearlayout

我的ScrollView包含LinearLayout

在代码中,我将项目添加到LinearLayout,并且可以很好地扩展。

当我在代码中移除LinearLayout中的所有项目时,LinearLayout保持相同的大小,但它是空的。

我如何获得ScrollView reclaim the heightLinearLayout使用的项目,并缩小LinearLayout以使用最小的高度,因为它现在是空的?

我试过(在C#中):

        linearLayout.RemoveAllViewsInLayout();
        linearLayout.PostInvalidate();
        scrollView.PostInvalidate();

Java或C#答案很好。

2 个答案:

答案 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;

必须有更好的方法,但这有效。