【问题标题】:ListView inside ViewPager inside ScrollViewScrollView 中的 ViewPager 中的 ListView
【发布时间】:2014-05-02 13:18:44
【问题描述】:

我目前正在开发一个基于iOS版本的Android应用,我要为主菜单实现如下布局:

带有几个按钮的顶部集线器,然后是其下方的 ViewPager。这个 ViewPager 在它上面(在它和集线器之间)有一个栏来显示页面的标题。 ViewPager 内部是一个 ListView,用于显示文章。

预期的滚动行为如下:当您从最顶部向下滚动时,它应该正常滚动并隐藏中心,然后当您滚动到标题栏到达顶部的位置时,它应该捕捉标题栏就位,您应该仍然能够滚动 ListView。

我不知道如何将集线器添加到所有这些中并具有所需的行为。在没有集线器的情况下,一切都已经实现并正常运行。但我不知道如何添加它并使其工作。

我尝试将所有内容都放在 ScrollView 中,但这似乎不起作用。滚动仍然适用于文章的 ListView,但它不会滚动中心。

根据大多数人的说法,您永远不应该在另一个元素中包含滚动元素。但我没有看到任何其他方法可以做到这一点。

【问题讨论】:

    标签: android listview android-viewpager scrollview


    【解决方案1】:

    我在一个滚动视图中有多个列表视图,为了使其工作,我使用以下方法设置每个列表视图的高度。过去一切正常。

    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null)
            return;
    
        int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
                MeasureSpec.UNSPECIFIED);
        int totalHeight = 0;
        View view = null;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            view = listAdapter.getView(i, view, listView);
            if (i == 0)
                view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth,
                        LayoutParams.WRAP_CONTENT));
    
            view.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
            totalHeight += view.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight
                + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }
    

    【讨论】:

      【解决方案2】:

      我已经实现了这个作为 ListView 工作的组件,所以你不需要调整你的外部代码,它解决了 Scrollview 中的 ListView 以及其他元素的问题......我将它命名为 StretchedListView,没有外部黑客必需的。这是对另一个帖子的回答:https://stackoverflow.com/a/21878703

      享受吧!

      【讨论】:

        猜你喜欢
        • 2012-02-20
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多