版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23575795/article/details/78478067
1.自定义ListView 重写OnMeasure方法适应ScrollView:
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 defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 重写该方法,达到使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); } }2:ScrollView滑动到底部ListView分页处理:
2.1:自定义ScrollView重写onOverScrolled方法 :
public class PageListScrollView extends ScrollView { private OnScrollToBottomListener mOnScrollToBottomListener; public PageListScrollView(Context context) { super(context); } public PageListScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public PageListScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //滚动到底部时,clampedY变为true,此时将回调将状态传出去 @Override protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); if (scrollY > 0 && mOnScrollToBottomListener != null) { mOnScrollToBottomListener.onScrollBottomListener(clampedY); } } public void setOnScrollToBottomListener(OnScrollToBottomListener listener) { mOnScrollToBottomListener = listener; } public interface OnScrollToBottomListener { void onScrollBottomListener(boolean isBottom); } }
3.在布局文件里嵌套:
<PageListScrollView android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@drawable/divider" android:orientation="vertical" android:showDividers="middle"> <!--其他布局-->
........
<ListViewForScrollView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout> </com.jingcai.apps.qualitydev.component.widget.PageListScrollView>
3.在activity中监听:
@Override public void onScrollBottomListener(boolean isBottom) { if (isBottom) { //page+1 再次请求
} }