【发布时间】: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;
}
}
【问题讨论】:
-
投了反对票,没有解释 :( ?
-
我认为最好使用带有标题的列表视图。 stackoverflow.com/questions/7978359/… 似乎工作得很好。