如何使列表视图显示所有项目而不滚动?

时间:2016-08-01 17:39:38

标签: android listview

我知道将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;
        }

    }

2 个答案:

答案 0 :(得分:0)

使用recycleler-view或list-view并使用view-type来扩展不同的布局,而不是使用scroolview并嵌套其他视图组。

答案 1 :(得分:0)

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

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

android:scrollbars="none"