gpt4 book ai didi

android - 我可以控制在 TabLayout/ViewPager 应用程序中何时允许滑动吗?

转载 作者:行者123 更新时间:2023-11-29 23:41:40 24 4
gpt4 key购买 nike

我正在为我的第二个应用程序做一些原型(prototype)设计,它将使用 TabLayout 和 ViewPager 以特定顺序显示一系列 4 个页面,以便用户可以按逻辑方式执行任务。我将需要确保在完成早期页面上的工作之前,用户不会从早期页面跳转到后期页面。这在 TabLayout/ViewPager 应用程序中甚至可能吗?

到目前为止,我看到的所有示例都展示了三个选项卡,并显示用户可以毫不费力地从一个选项卡滑动到下一个选项卡,然后再返回。这些示例甚至都没有暗示在满足给定条件之前可以阻止轻扫(或按 Tab 键)到其他页面之一。我需要了解是否有可能在这样的应用程序中限制滑动/制表符。

我希望用户完成第一页上的“工作”,然后通过单击“下一步”按钮表示他/她已完成。除非按下 NEXT,否则用户不应该能够继续到另一页。 (NEXT 按钮本质上是用户告诉应用程序他已完成第一页的方式。)出于同样的原因,如果用户在后面的页面之一,我不希望他能够返回转到大多数 页面中的前一页:我想编写程序逻辑,根据目前发生的情况决定是否可以将他带回到前一页。

我可以在 Android Studio 3.1.4 中执行我建议的操作吗?如果是,我将使用哪些主要类/方法来控制滑动和制表符?

如果这在 Android 中是不可能的,我应该使用什么方法来构建我的应用程序?

最佳答案

使用 Lockable View Pager 禁用用户输入触摸时在 viewpager 中的滑动

public class LockableViewPager extends ViewPager {

private boolean swipeLocked;

public LockableViewPager(Context context) {
super(context);
}

public LockableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}

public boolean getSwipeLocked() {
return swipeLocked;
}

public void setSwipeLocked(boolean swipeLocked) {
this.swipeLocked = swipeLocked;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return !swipeLocked && super.onTouchEvent(event);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return !swipeLocked && super.onInterceptTouchEvent(event);
}

@Override
public boolean canScrollHorizontally(int direction) {
return !swipeLocked && super.canScrollHorizontally(direction);
}

}

在 Tablayout 中设置 viewpager 后,尝试使用下面的代码让 tablayout 禁用触摸时的标签切换

LinearLayout tabStrip = ((LinearLayout)mTabLayout.getChildAt(0));
for(int i = 0; i < tabStrip.getChildCount(); i++) {
tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}

请参阅选项卡触摸选择禁用。

https://stackoverflow.com/a/37810306/3787344

关于android - 我可以控制在 TabLayout/ViewPager 应用程序中何时允许滑动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795659/

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