gpt4 book ai didi

Android:Viewpager 内的 SwipeRefreshLayout 内的搜索栏

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:10 25 4
gpt4 key购买 nike

我有一个包含多个 fragment 的 ViewPager。

在每个 Fragment 中,都有一个包含搜索栏的 SwipeRefreshLayout。

但是,搜索栏拇指移动不平滑(水平方向)。

即使我仍然触摸拇指,拇指也会自动移动搜索栏和释放触摸的一定百分比的进度。

有人遇到过同样的情况吗?

它如何修复它?

最佳答案

@robxyy 的回答是正确的,但我花了一些时间才弄清楚实现部分。因此,详细说明他的答案。请看下面的代码:

public class CustomSwipeRefreshLayout extends SwipeRefreshLayout {
private int mTouchSlop;
private float mPrevX;
private boolean isDisabled;

public CustomSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

public void disableInterceptTouchEvent(boolean isDisabled) {
this.isDisabled = isDisabled;
getParent().requestDisallowInterceptTouchEvent(isDisabled);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mPrevX = MotionEvent.obtain(event).getX();
break;
case MotionEvent.ACTION_MOVE:
if (isDisabled) {
return false;
}
float eventX = event.getX();
float xDiff = Math.abs(eventX - mPrevX);
if (xDiff > mTouchSlop) {
return false;
}
}
return super.onInterceptTouchEvent(event);
}
}

上面的类扩展了滑动刷新布局。现在我们需要调用

disableInterceptTouchEvent(true)

当我们开始Seekbar滑动时需要调用

disableInterceptTouchEvent(false)

当 Seekbar 滑动停止时。因此,自定义 Seekbar 类看起来像:

public class SwipeView extends RelativeLayout implements SeekBar.OnSeekBarChangeListener {
private CustomSwipeRefreshLayout swipeRefreshLayout;

public SwipePromotionView(CustomSwipeRefreshLayout swipeRefreshLayout) {
this.swipeRefreshLayout = swipeRefreshLayout;
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// include some logic here to decide which part of the swipe bar is a valid starting point
swipeRefreshLayout.disableInterceptTouchEvent(true);
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
swipeRefreshLayout.disableInterceptTouchEvent(false);
}
}

关于Android:Viewpager 内的 SwipeRefreshLayout 内的搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33841462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com