1、在布局文件中将listview的高度写死
2、动态设置listview的高度
public static void setListViewHeight(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();
}
int aa = listAdapter.getCount();
ViewGroup.LayoutParams params = listview.getLayoutParams();
params.height = totalHeight + (listview.getDividerHeight() * (aa - 1));
// ((MarginLayoutParams) params).setMargins(0,0,0, 0);
listview.setLayoutParams(params);
}
3、自定义listview使其适应scrollview:
public class ListViewForScrollView extends ListView {
public ListViewForScrollView(Context context) {
super(context);
}
public ListViewForScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ListViewForScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
/**
* 重写该方法,达到使ListView适应ScrollView的效果
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
4、使用listview的addHeader() 函数来实现预期效果
5、利用布局实现既定效果
2、动态设置listview的高度
public static void setListViewHeight(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();
}
int aa = listAdapter.getCount();
ViewGroup.LayoutParams params = listview.getLayoutParams();
params.height = totalHeight + (listview.getDividerHeight() * (aa - 1));
// ((MarginLayoutParams) params).setMargins(0,0,0, 0);
listview.setLayoutParams(params);
}
3、自定义listview使其适应scrollview:
public class ListViewForScrollView extends ListView {
public ListViewForScrollView(Context context) {
super(context);
}
public ListViewForScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ListViewForScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
/**
* 重写该方法,达到使ListView适应ScrollView的效果
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
4、使用listview的addHeader() 函数来实现预期效果
5、利用布局实现既定效果
本文介绍了五种解决ListView高度不适应ScrollView问题的方法,包括直接在布局文件中设定ListView高度、通过代码动态调整ListView高度、自定义ListView以适应ScrollView、使用addHeader()函数以及巧妙布局等技巧。
1508

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



