使用Android Studio设置滚动视图中的Listview高度
我参考了许多站点,最后我使用下面的方法设置Scrillview中的listview高度使用Android Studio设置滚动视图中的Listview高度,android,android-studio,Android,Android Studio,我参考了许多站点,最后我使用下面的方法设置Scrillview中的listview高度 public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; }
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.EXACTLY);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.setLayoutParams(new ViewGroup.LayoutParams(0, 0));
listItem.measure(desiredWidth, 0);
totalHeight += listItem.getMeasuredHeight();
}
System.out.println("list item height setListViewHeightBasedOnChildren :"+totalHeight);
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
在eclipse中,目标是22,现在我变成了23。但是为什么同样的代码现在不起作用呢。我也试了22次。两者都不起作用。所以,请帮助任何人。这种方法对我总是有效的:
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
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));
listView.setLayoutParams(params);
}
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
int totalHeight=0;
对于(int i=0;i
此方法始终适用于我:
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
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));
listView.setLayoutParams(params);
}
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
int totalHeight=0;
对于(int i=0;i
错误的高度意味着什么?如果有4个项目,那么eclipse中会给出356。对于同一个页面,如果我使用android studio运行,它给出的是2212。您是否在同一台设备上进行测试?是的,android 4.2.2的同一台设备是您的布局没有正确显示,或者您在代码中的某个位置要求总高度错误的高度意味着什么?如果有4个项目,则eclipse中给出356。对于同一页面,如果我使用android studio运行,它给出的是2212。你在同一台设备上测试吗?是的,android 4.2.2的同一台设备是你的布局没有正确显示,或者你在代码中的某个地方需要总高度。这与他使用的“listItem.measure(0,0);”方法相同给出NPE的行。这与他使用的“listItem.measure(0,0);”方法相同给出NPE的行。