关闭

ListView列表只显示一行的问题

170人阅读 评论(0) 收藏 举报
分类:

这里所提的ListView列表只显示一行的情况是,当ListView嵌套在ScrollView或PullToRefreshScrollView中的情况;

网上查询问题之后,大部分提供的答案是,在mListView.setAdapter(mAdapter)之后执行:

public static void getListHeight(ListView listView){
    // 获取listview的adapter
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }
    // 固定列宽,有多少列
    int row = listAdapter.getCount();//行数
    int totalHeight = 0;
    for (int i = 0; i < row; i++) {
        // 获取listview的每一个item
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0);
        // 获取item的高度和
        totalHeight += listItem.getMeasuredHeight();
    }

    // 获取listview的布局参数
    LayoutParams params = listView.getLayoutParams();
    // 设置高度
    params.height = totalHeight;
    // 设置参数
    listView.setLayoutParams(params);
},

但是事实有些时候不行;

最终我采取的方式是,重写ListView或GridView中的
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

   int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
         MeasureSpec.AT_MOST);
   super.onMeasure(widthMeasureSpec, expandSpec);
}
然后,就很容易的实现了;

如想了解为什么需要测量高度,网上资源很多,原理也很明了,此处只作为简单的笔记,与大家共享;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39469次
    • 积分:727
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:13篇
    • 译文:0篇
    • 评论:4条
    最新评论