Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Android Studio设置滚动视图中的Listview高度_Android_Android Studio - Fatal编程技术网

使用Android Studio设置滚动视图中的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; }

我参考了许多站点,最后我使用下面的方法设置Scrillview中的listview高度

  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的行。