用于expandablelistview的固定高度和内部滚动

时间:2016-02-12 11:45:44

标签: android scroll expandablelistview

我有一个可扩展的列表视图,以编程方式填充。我希望有可扩展列表视图的固定长度,并在每个组内滚动而不是整个列表。

我的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/ll_price_list_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/theme_blue"
        android:orientation="horizontal"
        android:weightSum="8" >

        <TextView
            android:id="@+id/tv_pricelisthead_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:gravity="left"
            android:text="PRICING"
            android:textColor="@color/white"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/tv_pricelisthead_np"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="2"
            android:gravity="center"
            android:text="NORMAL"
            android:textColor="@color/white"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/tv_pricelisthead_ep"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="2"
            android:gravity="center"
            android:text="EXPRESS"
            android:textColor="@color/white"
            android:textSize="18sp" />
    </LinearLayout>
    <!--
 android:background="@drawable/hf_bg"  
 <TextView
        android:id="@+id/tv_price_list"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="16dp"
        android:text="Price List"/>
    -->

    <ExpandableListView
        android:id="@+id/elv_pricelist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:transcriptMode="alwaysScroll" >
    </ExpandableListView>

</LinearLayout>

使用上面的布局我可以得到一个列表视图。 我希望这个listview占用固定的长度。应始终显示标题,并且内部子项目的滚动应该不在整个列表中。 我只有3组,每组可能有大约10-30个儿童用品。

1 个答案:

答案 0 :(得分:0)

我在一段时间后发现了这个代码,我试图搜索这个,但找不到它。如果有人,请编辑我的答案并提供原始答案的链接。由于ExpandableListView扩展ListView,您可以使用此代码,但请确保在适配器中已经扩展了子代。

private void justifyListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter adapter = listView.getAdapter();
        if (adapter == null) {
            return;
        }
        int totalHeight = 0;
        for (int i = 0; i < adapter.getCount(); i++) {
            View listItem = adapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams par = listView.getLayoutParams();
        par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
        listView.setLayoutParams(par);
        listView.requestLayout();
    }