码迷,mamicode.com
首页 > 移动开发 > 详细

Android 中ScrollView嵌套ListView 最简单有效的处理方法

时间:2015-12-02 20:23:11      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

第一次写博客,有错的地方大家可以指出;

大家都知道在ScrollView嵌套ListView,ListView会显示不完全,无法计算ListView的高度,要解决在一个滑动界面中显示ListView和其他布局,有两种方法;

第一种:就是让listView的高度全部展示出来,那么这个就要对ListView进行封装,重新设置高度;代码如下:

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);
}

/**
* 重写onMeasure(),达到使ListView适应ScrollView的效果
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}

其中两个输入参数:
  widthMeasureSpec 水平宽度
  heightMeasureSpec 垂直高度
  这两个要求是按照View.MeasureSpec类来进行编码的。
  参见View.MeasureSpec这个类的说明:这个类包装了从parent传递下来的布局要求,传递给这个child。
  每一个MeasureSpec代表了对宽度或者高度的一个要求。
  每一个MeasureSpec有一个尺寸(size)和一个模式(mode)构成。
MeasureSpec.AT_MOST 表示子布局可以根据自己的大小选择任意大小的模式
Integer.MAX_VALUE >> 2 表示值为 2的31次方-1 的常量,它表示 int 类型能够表示的最大值。

第二种方法:想要实现滑动界面中包含ListView,可以通过给ListView添加HeaderView或者FooterView来实现,代码如下:
mView = View.inflate(mContext, R.layout.fragment_base_slide_view_contact, this);
mistView = (ListView)mView.findViewById(R.id.lv_card);
headerView = View.inflate(mContext, R.layout.top, null);
footerView = View.inflate(mContext, R.layout.foot, null);
mTextNotExc = (TextView)headerView.findViewById(R.id.tv_exchange);
friendTips = (ImageView)headerView.findViewById(R.id.iv_tips);

allNumber = (TextView)footerView.findViewById(R.id.tv_number);
llNumber = (LinearLayout)footerView.findViewById(R.id.ll_number);
mListView.addHeaderView(headerView, null, false);
mListView.addFooterView(footerView, null, false);

在ListView中添加上头和尾布局,一样可以实现上述效果,而且这种方法比第一种的更好,它不用一次性把所有的数据全部加载出来,可以和平常的listView差不多使用,支持分页加载;
 

Android 中ScrollView嵌套ListView 最简单有效的处理方法

标签:

原文地址:http://www.cnblogs.com/lanStudy/p/5013766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!