如何根据其中的List View的大小动态增加Fragment的高度

时间:2016-10-10 11:28:41

标签: android android-layout listview android-fragments

我的布局中有fragment,片段中包含ListView

现在我动态地向我的ListView添加数据,因此wrap_contentmatch_parent不会影响其height,我使用以下appracoh动态增加listView的高度。此方法在ListViews上完美运行,但在此失败。

  public void setListHeight(ListView listView) {
        DataListAdapter listAdapter= (DataListAdapter)listView.getAdapter();
        if (listAdapter == null) {
            return;
        }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }

我可以使用上面的方法动态增加listView的高度,但片段的高度仍为wrap_content。我无法理解如何动态增加Fragment的高度,因为ListView高度不会影响Fragment高度,并且它仍然只显示ListView <中的1个项目/ p>

   <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <fragment
               class="com.myproject.fragments.fragmentControl"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:id="@+id/fragmentId"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@android:color/white"/>

        </LinearLayout>

1 个答案:

答案 0 :(得分:1)