1.底部的viewpage包含的Fragment中,布局不支持listview 、scrollview等常规View。需要使用RecycleView或者NestScrollview
2.如果recycleview没有设置adapter,那么只能上滑、不能下滑
3.关于viewpage滑动惯性的问题,可以重写behavior,在xml中配置给appbar
这个问题在design25.0.0是没有的 但是26就有问题
import android.content.Context;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.OverScroller;
import java.lang.reflect.Field;
/**
Created by kevin on 2018/8/8.
*/
public class CustomBehavior extends AppBarLayout.Behavior {
private OverScroller mScroller;public CustomBehavior() {
}public CustomBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
getParentScroller(context);
}/**
//fling上滑appbar然后迅速fling下滑recycler时, HeaderBehavior的mScroller并未停止, 会导致上下来回晃动
@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed, int type) {
if (mScroller != null) { //当recyclerView 做好滑动准备的时候 直接干掉Appbar的滑动
if (mScroller.computeScrollOffset()) {
mScroller.abortAnimation();
}
}
if (type == ViewCompat.TYPE_NON_TOUCH && getTopAndBottomOffset() == 0) { //recyclerview的惯性比较大 ,会顶在头部一会儿, 到头直接干掉它的滑动
ViewCompat.stopNestedScroll(target, type);
}
super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);
}@Override
public boolean onTouchEvent(CoordinatorLayout parent, AppBarLayout child, MotionEvent e) {switch (e.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; } return super.onTouchEvent(parent, child, e);
}
反射获得滑动属性。
@param context
*/
private void getParentScroller(Context context) {
if (mScroller != null) return;
mScroller = new OverScroller(context);
try {
Class<?> reflex_class = getClass().getSuperclass().getSuperclass();//父类AppBarLayout.Behavior父类的父类HeaderBehavior
Field fieldScroller = reflex_class.getDeclaredField("mScroller");
fieldScroller.setAccessible(true);
fieldScroller.set(this, mScroller);
} catch (Exception e) {
}
}
}
作者:月亮的后羿
链接:https://www.jianshu.com/p/b9972a054aaf