ScrollView嵌套RecyclerView冲突解决
16lz
2021-01-23
1. ScrollView滑动不到顶部:
用这两句解决:
android:focusable=“true”
android:focusableInTouchMode=“true”
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”
更多相关文章
- android给view比如layout等添加阴影效果
- Android 中可重写的一些样式
- fullScreen时的软键盘监听(非重写Layout方式)
- Android中Touch事件的处理逻辑
- Android 沉浸式statusbar (5.0以上无阴影,statusbar背景全透明)
- android重写Dialog(接上文)
- 重写dialog
- Android TextView显示文字过长时添加阴影渐变消失效果
- Android控件阴影效果的几种实现方法