1. ScrollView滑动不到顶部:
用这两句解决:
android:focusable=“true”
android:focusableInTouchMode=“true”
<com.huolian.zsss.widget.SlideListenerNestScrollview xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:overScrollMode="never">
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
2.禁止recyclerview滑动
重写LinearLayout的canScrollVertical
recruitMainJobslist.setLayoutManager(new LinearLayoutManager(recruitMainActivity.this) {
@Override
public boolean canScrollVertically() {
return false;
}
});
3.显示不全
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;
import androidx.core.widget.NestedScrollView;
/**
* 解决scrollview与viewPager滑动冲突,解决gridRecyclerView-scrollView显示不全
* 拦截父类Interceptor
*/
public class SlideListenerNestScrollview extends NestedScrollView {
public SlideListenerNestScrollview(Context context) {
super(context);
}
public SlideListenerNestScrollview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlideListenerNestScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mScrollChangeListener != null) {
mScrollChangeListener.onScroll(this, l, t);
}
}
private ScrollChangeListener mScrollChangeListener;
public void setmScrollChangeListener(ScrollChangeListener listener) {
mScrollChangeListener = listener;
}
public interface ScrollChangeListener {
void onScroll(SlideListenerNestScrollview slideListenerScrollview, int dx, int dy);
}
@Override
public void computeScroll() {
super.computeScroll();
}
private float mDownPosX = 0;
private float mDownPosY = 0;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final float x = ev.getX();
final float y = ev.getY();
final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mDownPosX = x;
mDownPosY = y;
break;
case MotionEvent.ACTION_MOVE:
final float deltaX = Math.abs(x - mDownPosX);
final float deltaY = Math.abs(y - mDownPosY);
// 这里是够拦截的判断依据是左右滑动,读者可根据自己的逻辑进行是否拦截
if (deltaX > deltaY) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
具体为啥,没看
4.scrollview recyclerView 去掉阴影:
android:overScrollMode=“never”