在scrollview中使用listview时,由于两个都是滑动组件,会出现滑动冲突的情况,解决办法是创建一个可以平铺在ScrollView中的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);
}
@Override
/**
* 重写该方法,达到使ListView适应ScrollView的效果
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
这个listview嵌套在ScrollView时可能出现初始化后没在ScrollView顶部的问题,可以在设置好listview的adapter之后设置scrollview.smoothScrollTo(0, 20);无效时,在代码里去掉listview的焦点 lv.setFocusable(false);