gpt4 book ai didi

java - 实现 OnPageChangeListener 的类

转载 作者:行者123 更新时间:2023-12-01 08:58:51 25 4
gpt4 key购买 nike

我的应用程序使用连接的蓝牙设备向其发送事件,因此当我从 BLE 设备接收到事件时,我必须执行某些操作。此外,我还创建了一个实现 OnPageChangeListener 的内部类,并且我还使用一个用于滑动选项卡的类。我的目标是当我收到事件时通过选项卡“前进”。例如,如果我停留在选项卡 1 中,我想转到选项卡 2,依此类推。

我如何使用我的类(class)来做到这一点?我的疑问是:我必须调用什么方法才能更改选项卡?

这是实现OnPageChangeListener的内部类

    private class InternalViewPagerListener implements ViewPager.OnPageChangeListener {
private int mScrollState;

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
int tabStripChildCount = mTabStrip.getChildCount();
if ((tabStripChildCount == 0) || (position < 0) || (position >= tabStripChildCount)) {
return;
}

mTabStrip.onViewPagerPageChanged(position, positionOffset);

View selectedTitle = mTabStrip.getChildAt(position);
int extraOffset = (selectedTitle != null)
? (int) (positionOffset * selectedTitle.getWidth())
: 0;
scrollToTab(position, extraOffset);

if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageScrolled(position, positionOffset,
positionOffsetPixels);
}
}

@Override
public void onPageScrollStateChanged(int state) {
mScrollState = state;

if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageScrollStateChanged(state);
}
}

@Override
public void onPageSelected(int position) {
if (mScrollState == ViewPager.SCROLL_STATE_IDLE) {
mTabStrip.onViewPagerPageChanged(position, 0f);
scrollToTab(position, 0);
}

if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageSelected(position);
}
}

}

private class TabClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
for (int i = 0; i < mTabStrip.getChildCount(); i++) {
if (v == mTabStrip.getChildAt(i)) {
mViewPager.setCurrentItem(i);
return;
}
}
}
}

我也有这个方法:

    public void scrollToTab(int tabIndex, int positionOffset) {
final int tabStripChildCount = mTabStrip.getChildCount();
if (tabStripChildCount == 0 || tabIndex < 0 || tabIndex >= tabStripChildCount) {
return;
}

View selectedChild = mTabStrip.getChildAt(tabIndex);
if (selectedChild != null) {
int targetScrollX = selectedChild.getLeft() + positionOffset;

if (tabIndex > 0 || positionOffset > 0) {
// If we're not at the first child and are mid-scroll, make sure we obey the offset
targetScrollX -= mTitleOffset;
}

scrollTo(targetScrollX, 0);
}
}

最佳答案

您可以使用viewPager.setCurrentItem()来更改选项卡。

例如,假设您想通过单击按钮移至下一个选项卡:

private void onClick(){
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
}

现在,viewPager.getCurrentItem() 将获取当前选项卡的数量,+1 会将当前项目设置为下一个项目。

关于java - 实现 OnPageChangeListener 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855627/

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