[英]Vertical ScrollView inside vertical ViewPager2 not working Android
我有一個由 2 Fragments
組成的垂直方向的基本ViewPager2
。
在Fragment
2 中,我有一個垂直的ScrollView
。
兩個垂直滾動都存在沖突,並且無法正常工作。 我知道有很多類似的問題,但我發現和嘗試的一切都失敗了。
我正在尋找一種可以同時處理觸摸事件的解決方案。
任何代碼示例或領導謝謝
我終於通過編寫我的自定義滾動視圖來處理垂直滾動來解決我的問題:
public class CustomScrollView extends NestedScrollView {
public CustomScrollView(@NonNull Context context) {
super(context);
}
public CustomScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
float startY, dy;
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
if (scrollY > 15) { // 10 - 15 -> avoid fake mouv
viewPager2.setUserInputEnabled(false);
}
else {
viewPager2.setUserInputEnabled(true);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
startY = ev.getRawY();
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
startY = ev.getRawY();
break;
case MotionEvent.ACTION_MOVE:
dy = ev.getRawY() - startY;
if (dy > -5 && dy < 70) { // range tested on 5 devices but can be modified
return false;
}
else {
viewPager2.setUserInputEnabled(false);
}
break;
}
return super.onTouchEvent(ev);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.