如何将ListView与其他一些视图放入ScrollView而不会崩溃?

时间:2012-08-09 10:20:32

标签: android android-listview scrollview

我有一些动态列表,在某些输入上增长我也有选项卡和它上面的一些布局。我想滚动它们以及列表增长。 简单来说,只是不加载完整列表,但滚动其他东西作为我滚动列表。 我正在做这样的事情。

  <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:dividerPadding="5dp"
                android:orientation="horizontal" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />

            <FrameLayout
                android:id="@+android:id/realtabcontent"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </LinearLayout>
    </TabHost>
</ScrollView>

请注意 我也想滚动标签。 我目前正在使用此代码

public static class Utility {
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter(); 
        if (listAdapter == null) {
            // pre-condition
            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);
    }
}

用于制作列表视图,但是当我加载屏幕时,它会从列表中聚焦屏幕,而不是从选项卡中聚焦。任何人都知道如何从顶部开始关注它 请帮忙

1 个答案:

答案 0 :(得分:0)

您的ListView将始终独立于其他列表滚动。如果你想让所有东西都滚动在一起,那么你需要看一下使用LinearLayout模仿ListView并将每一行添加到布局中。然后,这将强制布局粘附到外部滚动视图容器。