在子更改可见性后,ListView不会包装内容

时间:2014-01-19 00:35:40

标签: android listview android-listview

我有一个ListView,其子项在点击时切换可见性。每个项目都有两个孩子,一次只能看到一个孩子,另一个是gone,如果单击该项目,则会切换其子项的可见性。

非常不幸的是,一个孩子比另一个孩子高,所以列表视图的高度需要在每个切换时改变,但这不会发生。高度保持不变。

我尝试过使用LayoutParams但没有得到任何东西。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

经过大量的试验和错误后,我通过在更改视图的可见性后更改列表视图的LayoutParams,设法使其工作变得简单。

 view.setVisibility(View.GONE);
 LinearLayout layout = (LinearLayout) view.getParent();
 layout.getChildAt(0).setVisibility(View.VISIBLE);
 ((ListView) layout.getParent()).getLayoutParams().height =
                LinearLayout.LayoutParams.MATCH_PARENT;

请注意,我的ListView中的项目如下所示

<LineaLayout>
    <LinearLayout
     onclick="alterVisibility">
    </LinearLayout>
    <LinearLayout
     onclick="alterVisibility"
     visibility="gone">
    </LinearLayout>
</LinearLayout>