我想为我的用户显示个人资料屏幕。
它必须具有三个视图(2Buttons
and a ImageView
) and a ListView
显示该用户制作的内容。
但是,我不想要ListView
滚动。相反,我希望它尽可能大,并将我所有的观点放在一个ScrollView
,因此前三个视图会随着ListView
。当然,这不会按预期工作。
我的所有三件物品都在一个LinearLayout
。我想把它们作为第一个项目ListView
,但这会导致它们被选为第一项,并且必须执行一些不需要的编码。
有没有办法以简单的方式做到这一点,或者我必须坚持将布局作为 ListView 中的第一项?
我为此找到了一个非常简单的解决方案。只需获取列表视图的适配器并在显示所有项目时计算其大小即可。
优点是该解决方案也适用于 ScrollView 内部。
Example:
public static void justifyListViewHeightBasedOnChildren (ListView listView) {
ListAdapter adapter = listView.getAdapter();
if (adapter == null) {
return;
}
ViewGroup vg = listView;
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, vg);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams par = listView.getLayoutParams();
par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(par);
listView.requestLayout();
}
调用此函数并传递 ListView 对象:
justifyListViewHeightBasedOnChildren(myListview);
上面显示的功能是对帖子的修改:禁用列表视图中的滚动 https://stackoverflow.com/questions/7611085/disable-scrolling-in-listview
请注意,在将适配器设置为列表视图后调用此函数。如果适配器中条目的大小发生了变化,您也需要调用此函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)