gpt4 book ai didi

android - ViewPager 以编程方式设置当前页面

转载 作者:IT老高 更新时间:2023-10-28 23:27:16 27 4
gpt4 key购买 nike

我编写了一个自定义 ViewPager 来禁用 Swipe Scroll,但我想以编程方式滑动。我的 View 寻呼机中有三个 Tab,但是当我在第一个 Fragment 上调用 viewPager.setCurrentItem(viewPager.getCurrentItem()+1) ,它移动到第三个 Fragment 而不是第二个 Fragment。如果我在第二个 Fragment 中调用相同的函数,它会转到第三个。如果我在第三个 fragment 中调用 (viewPager.getCurrentItem()-1)`,它可以通过向后移动来正常工作。任何帮助,将不胜感激。我的代码如下:

NonSwipeAbleViewPager

public class NonSwipeableViewPager extends ViewPager {

private boolean swipeable;

public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyViewPager);
try {
swipeable = a.getBoolean(R.styleable.MyViewPager_swipeable, true);
} finally {
a.recycle();
}
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return swipeable ? super.onInterceptTouchEvent(event) : false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return swipeable ? super.onTouchEvent(event) : false;
}
}

XML 声明

<co.example.customview.NonSwipeableViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:swipeable="false" />

调用它

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuNext:
NonSwipeableViewPager pages = (NonSwipeableViewPager) getActivity().findViewById(R.id.pager);
pages.setCurrentItem(pages.getCurrentItem()+1, true);
break;
default:
return super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
}

最佳答案

viewPager.setCurrentItem(idx);

其中 idx 是基于 0 的整数。

关于android - ViewPager 以编程方式设置当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968512/

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