查看: 37|回复: 0

    TabLayout + ViewPager 使用,禁止ViewPager 滑动

    [复制链接]

    219

    主题

    219

    帖子

    511

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    511
    发表于 2022-1-6 09:27:18 | 显示全部楼层 |阅读模式
    TabLayout + ViewPager 使用,禁止ViewPager 滑动1. ViewPager 取消左右滑动,自定义一个ViewPager,代码如下:
    NoScrollViewPager .java
    1. public class NoScrollViewPager extends ViewPager {

    2.     // 定义一个是否可以滑动的boolean 值
    3.     private boolean isCanScroll = false;

    4.     public NoScrollViewPager(@NonNull Context context) {
    5.         super(context);
    6.     }

    7.     public NoScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
    8.         super(context, attrs);
    9.     }


    10.     // 滑动到指定位置
    11.     @Override
    12.     public void scrollTo(int x, int y) {
    13.         super.scrollTo(x, y);
    14.     }

    15.     // 触摸事件
    16.     @Override
    17.     public boolean onTouchEvent(MotionEvent ev) {
    18.         if (isCanScroll) {
    19.             return super.onTouchEvent(ev);
    20.         } else {
    21.             return false;
    22.         }
    23.     }

    24.     // 设置当前显示的布局
    25.     @Override
    26.     public void setCurrentItem(int item) {
    27.         super.setCurrentItem(item);
    28.     }

    29.     // 设置当前显示的布局,并定义滑动方式
    30.     @Override
    31.     public void setCurrentItem(int item, boolean smoothScroll) {
    32.         super.setCurrentItem(item, smoothScroll);
    33.     }


    34.     // 拦截触摸事件
    35.     @Override
    36.     public boolean onInterceptTouchEvent(MotionEvent ev) {
    37.         if (isCanScroll) {
    38.             return super.onInterceptTouchEvent(ev);
    39.         } else {
    40.             return false;
    41.         }
    42.     }
    43. }

    复制代码

    2. UI布局
    activitu_main.xml
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3.     xmlns:app="http://schemas.android.com/apk/res-auto"
    4.     xmlns:tools="http://schemas.android.com/tools"
    5.     android:layout_width="match_parent"
    6.     android:layout_height="match_parent"
    7.     android:orientation="vertical"
    8.     tools:context=".MainActivity">

    9.     <android.support.design.widget.TabLayout
    10.         android:id="@+id/tablayout"
    11.         android:layout_width="match_parent"
    12.         android:layout_height="wrap_content"
    13.         app:tabIndicatorColor="@color/colorPrimary"
    14.         app:tabIndicatorHeight="2dp"
    15.         app:tabMode="fixed"
    16.         app:tabSelectedTextColor="@color/colorPrimary" />


    17.     <com.example.administrator.tablayoutdemo.NoScrollViewPager
    18.         android:id="@+id/noScrollViewPager"
    19.         android:layout_width="match_parent"
    20.         android:layout_height="match_parent" />


    21. </LinearLayout>

    复制代码
    3.UI修改
    MainActivity.java
    1. public class MainActivity extends AppCompatActivity {

    2.     private TabLayout mTablayout;
    3.     private NoScrollViewPager mNoScrollViewPager;
    4.     private List<String> titles = new ArrayList<>();
    5.     private List<Fragment> fragments = new ArrayList<>();


    6.     @Override
    7.     protected void onCreate(Bundle savedInstanceState) {
    8.         super.onCreate(savedInstanceState);
    9.         setContentView(R.layout.activity_main);
    10.         initView();
    11.         initSet();

    12.     }

    13.     private void initSet() {

    14.         titles.add("aaaa");
    15.         titles.add("bbbb");
    16.         titles.add("cccc");
    17.         titles.add("dddd");
    18.         titles.add("eeee");
    19.         titles.add("ffff");

    20.         for (int i = 0; i < titles.size(); i++) {
    21.             fragments.add(new BlankFragment());
    22.         }

    23.         MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
    24.         mNoScrollViewPager.setAdapter(adapter);
    25.         mTablayout.setupWithViewPager(mNoScrollViewPager);


    26.     }

    27.     private void initView() {
    28.         mTablayout = (TabLayout) findViewById(R.id.tablayout);
    29.         mNoScrollViewPager = (NoScrollViewPager) findViewById(R.id.noScrollViewPager);
    30.     }

    31.     class MyAdapter extends FragmentPagerAdapter {

    32.         public MyAdapter(FragmentManager fm) {
    33.             super(fm);
    34.         }

    35.         @Override
    36.         public Fragment getItem(int position) {
    37.             return fragments.get(position);
    38.         }

    39.         @Override
    40.         public int getCount() {
    41.             return fragments.size();
    42.         }

    43.         @Nullable
    44.         @Override
    45.         public CharSequence getPageTitle(int position) {
    46.             return titles.get(position);
    47.         }
    48.     }


    49. }

    复制代码




    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    免责声明:
    1、转载或引用本网站内容须注明原网址,并标明本网站网址“源码资源网”
    2、转载或引用本网站中的署名文章,请按规定向原作者支付稿酬
    3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任
    4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利
    5、资源部分来自网络,不保证资源的完整性,仅供学习研究,如需运营请购买正版,如有侵权请联系客服删除
    6、本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律用于者承担

    QQ|手机版|小黑屋|源码资源网 ( 鲁ICP备2021043233号-3 )

    GMT+8, 2022-1-20 04:42

    邮箱:312337667@qq.com 客服QQ:312337667(工作时间:7:00~23:00)

    © Powered by Net188.com X3.4

    快速回复 返回顶部 返回列表