Android 动态获取ListView的高度_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android 动态获取ListView的高度

Android 动态获取ListView的高度

 2013/8/1 16:09:25  蹒跚走路的程序猿  博客园  我要评论(0)
  • 摘要:今天介绍一下怎么动态的获取listview的高度。看代码:publicstaticvoidsetListViewHeightBasedOnChildren(ListViewlistView){ListAdapterlistAdapter=listView.getAdapter();if(listAdapter==null){//pre-conditionreturn;}inttotalHeight=0;for(inti=0;i<listAdapter.getCount();i++)
  • 标签:android view list 动态获取

今天介绍一下怎么动态的获取listview的高度。看代码:

monospace, serif; font-size: 14px; vertical-align: baseline; background-color: #eeeeee;"> 

public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            // listItem.measure(0, 0);
            listItem.measure(
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight
                + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

 

使用这个代码来获取listview的高度,需要注意一下几个问题:

1、listview的item的根布局一定要是LinearLayout;

2、调用这个方法需要在适配器数据加载更新之后;代码如下:

mAdapter.notifyDataSetChanged();     Function.getTotalHeightofListView(mListView);

3、获取item的高度也可以用注释掉的代码,效果一样的。

发表评论
用户名: 匿名