ScrollView与ListView共存会存在滚动的问题,并且ListView只显示一个半Item。 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item。 因此我们可以计算出这个ListView的总高度,再将它设置到ListView中,那么之前的滚动,高度问题也就不存在了。
1. [代码]获取并设置ListView高度的方法
public
void
setListViewHeightBasedOnChildren(ListView listView) { ListAdapter
listAdapter = listView.getAdapter(); if
(listAdapter == null)
{ return;
}
int
totalHeight = 0;
for
(int
i = 0;
i < listAdapter.getCount(); i++) { View
listItem = listAdapter.getView(i, null,
listView); listItem.measure(0,
0);
totalHeight
+= listItem.getMeasuredHeight(); }
ViewGroup.LayoutParams
params = listView.getLayoutParams(); params.height
= totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -
1));
((MarginLayoutParams)params).setMargins(10,
10,
10,
10); listView.setLayoutParams(params);
}
[代码]重写ListView解决item高度不一致的问题
public
class
MyListView extends
ListView { public
MyListView(Context context) { super(context); } public
MyListView(Context context, AttributeSet attrs) { super(context,
attrs); } public
MyListView(Context context, AttributeSet attrs, int
defStyle) { super(context,
attrs, defStyle); } @Override protected
void
onMeasure(int
widthMeasureSpec, int
heightMeasureSpec) { int
expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec,
expandSpec); }}
本文介绍了如何通过设置ListView高度基于其子项来解决ScrollView与ListView共存时出现的滚动及高度问题。通过实现获取ListView高度的代码方法,确保ListView正确显示所有Item,避免了高度不足导致的显示不全或滚动异常。
981

被折叠的 条评论
为什么被折叠?



