Android:如何通过单击按钮禁用tablayout控件之间的滑动

标签 android button onclicklistener android-tablelayout

我的选项卡布局中有 2 个 fragment ,我设法通过单击按钮禁用选项卡布局之间的滑动功能。如何在我的 onclick 按钮中实现禁用功能。感谢提前

主 Activity

public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{


private TabLayout tabLayout;

private ViewPager viewPager;
int ans =2;

 ------FCViewPager disable;------

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    tabLayout = (TabLayout) findViewById(R.id.tabLayout);

    BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager());
    Tab1 tab1 = new Tab1();
    Tab2 tab2 = new Tab2();


    adapter.addFragment(tab1, "1");
    adapter.addFragment(tab2, "2");

    viewPager = (ViewPager) findViewById(R.id.pager);


    viewPager.setAdapter(adapter);


    tabLayout.setOnTabSelectedListener(this);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setupWithViewPager(viewPager);

}

----- public void testing(查看 View ){

        disable.setEnableSwipe(false);

}---------
@Override
public void onTabSelected(TabLayout.Tab tab) {
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(TabLayout.Tab tab) {

}


@Override
public void onTabReselected(TabLayout.Tab tab) {

}
public class BasePagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    public BasePagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }


    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }


    public void removeFragment(int position) {
        mFragmentTitleList.remove(position);
        mFragmentList.remove(position);
        notifyDataSetChanged();

    }
    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

}

标签1

 public class Tab1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View h = inflater.inflate(R.layout.tab1, container, false);

    return  h;
}

选项卡2

public class Tab2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View h = inflater.inflate(R.layout.tab2, container, false);
        return h;
    }

最佳答案

您可以在 ViewPager 中禁用滑动功能。如下创建自定义 ViewPager。

public class FCViewPager extends ViewPager {

    private boolean enableSwipe;

    public FCViewPager(Context context) {
        super(context);
        init();
    }

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

    private void init() {
        enableSwipe = true;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return enableSwipe && super.onInterceptTouchEvent(event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return enableSwipe && super.onTouchEvent(event);

    }

    public void setEnableSwipe(boolean enableSwipe) {
        this.enableSwipe = enableSwipe;
    }
}

在您的 MainActivity 中

//R.id.pager has to be FCViewPager not default ViewPager
viewPager = (FCViewPager) findViewById(R.id.pager); 

你的按钮onClick函数

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pager.setEnableSwipe(false);
            }
        });

关于Android:如何通过单击按钮禁用tablayout控件之间的滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196030/

相关文章:

android - 如何在android中绘制大而细的文本

button - Extjs 取消按下按钮

c# - 当按下 'Next' 按钮时如何继续显示 LINQ 结果?

android - 按钮 onClick 事件不会在 Android 中触发

android - 调用 OnClick 而不是 onLongClick

android - 编写一个可以跨设备更新的应用程序

Javascript 与 Android 的 Webview 交互

ios - React Native onStartShouldSetResponder 和 onResponderRelease?

android - 我可以在 ViewModel 中使用 view.getContext() 作为我的数据绑定(bind)类吗

java - 如何在运行时获取设备高度和宽度?