【问题标题】:How to make a listview display all items without scrolliing?如何使列表视图显示所有项目而不滚动?
【发布时间】:2016-08-01 17:39:37
【问题描述】:

我知道不推荐将 ListView 放在 ScrollView 中。但我必须使用 ListView,因为我使用的是适配器和其他各种方法。

我使用了这段代码,它是在 StackOverflow 上找到的,它显示了我列表的大部分内容。但是,在纵向模式下,某些项目会从底部切掉,而在横向模式下也是如此。

如何解决这个问题?澄清一下,我有一个 ScrollView,其中包含一个 LinearLayout,其中包含一些元素和我的 XML 中的 ListView。 另外,如果我去一个新的活动,然后返回,我可以简要地看到列表视图的滚动条出现和消失。怎么也能改正呢?

public static boolean setListViewHeightBasedOnItems(ListView listView) {

        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter != null) {

            int numberOfItems = listAdapter.getCount();

            // Get total height of all items.
            int totalItemsHeight = 0;
            for (int itemPos = 0; itemPos < numberOfItems; itemPos++) {
                View item = listAdapter.getView(itemPos, null, listView);
                item.measure(0, 0);
                totalItemsHeight += item.getMeasuredHeight();
            }

            // Get total height of all item dividers.
            int totalDividersHeight = listView.getDividerHeight() *
                    (numberOfItems - 1);

            // Set list height.
            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalItemsHeight + totalDividersHeight;
            listView.setLayoutParams(params);
            listView.requestLayout();

            return true;

        } else {
            return false;
        }

    }

【问题讨论】:

标签: android listview


【解决方案1】:

使用 recycler-view 或 list-view 并利用 view-type 来膨胀不同的布局,而不是使用 scroolview 并在其中嵌套其他视图组。

【讨论】:

  • 对于我相对简单的活动来说,这似乎过于复杂。我在顶部有一些单选按钮和标题。之后使用搜索过滤器和列表视图。
  • 不,它会简化您的问题并将其分解为几个有凝聚力和次优的组件(布局)。
【解决方案2】:

我认为你的问题有点误导。只要我们在处理这些微小的移动屏幕,listview 究竟如何在不滚动的情况下显示其所有项目?

也许您希望scroll bar 不显示,然后您可以在您的ScrollView 上设置attribute

android:scrollbars="none"

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多