Fragment 与 ViewPager的联合应用(2)

 5.创建底部布局bottom_layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:background="@color/gray">

    <!--主页-->
    <LinearLayout
        android:id="@+id/id_tab_zy"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_gravity="center">

        <ImageView
            android:id="@+id/tab_iv_zy"
            android:background="@drawable/zy_show"
            android:layout_width="32dp"
            android:layout_height="32dp"/>

        <TextView
            android:id="@+id/text_zy"
            android:layout_width="32dp"
            android:layout_height="wrap_content"
            android:text="主页"
            android:gravity="center"/>
    </LinearLayout>
    
    <LinearLayout> ... </LinearLayout>
    <LinearLayout> ... </LinearLayout>
    <LinearLayout> ... </LinearLayout>
    //除id、background、text属性不一致,其余三个LinearLayout内容和第一个LinearLayout一致,所以不重复展示

</LinearLayout>

res目录

6.在MainActivity中创建initTabView()函数  实现View.OnClickListener函数并监听

private void initTabView() {
        llZy = findViewById(R.id.id_tab_zy);
        llZy.setOnClickListener(this);
        llTxl = findViewById(R.id.id_tab_txl);
        llTxl.setOnClickListener(this);
        llFx = findViewById(R.id.id_tab_fx);
        llFx.setOnClickListener(this);
        llMe = findViewById(R.id.id_tab_me);
        llMe.setOnClickListener(this);

        imZy = findViewById(R.id.tab_iv_zy);
        imTxl = findViewById(R.id.tab_iv_txl);
        imFx = findViewById(R.id.tab_iv_fx);
        imME = findViewById(R.id.tab_iv_me);

        imCurrent = imZy;
    }
@Override
    public void onClick(View view) {
        changeTab(view.getId());
    }
private void changeTab(int position) {
        imCurrent.setSelected(false);
        switch (position){
            case R.id.id_tab_zy:
                viewPager.setCurrentItem(0);
            case 0:
                llZy.setSelected(true);
                imCurrent = imZy;
                break;
            case R.id.id_tab_txl:
                viewPager.setCurrentItem(1);
            case 1:
                llTxl.setSelected(true);
                imCurrent = imTxl;
                break;
            case R.id.id_tab_fx:
                viewPager.setCurrentItem(2);
            case 2:
                llFx.setSelected(true);
                imCurrent = imFx;
                break;
            case R.id.id_tab_me:
                viewPager.setCurrentItem(3);
            case 3:
                llMe.setSelected(true);
                imCurrent =imME;
                break;
        }
    }

7.将bottom_layout添加至activity_main中

<include layout="@layout/bottom_layout"/>

8.实现viewpager和底部的响应  在initViewPager()中添加

viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            //可以添加滚动动画
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }

            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                changeTab(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });

基本完成viewpager和frgement简单的联合应用

相关推荐

  1. Viewpage+TabLayout+Fragment功能实现

    2024-03-27 17:14:03       35 阅读
  2. Android ViewPagerViewPager2区别

    2024-03-27 17:14:03       24 阅读
  3. linux链表2

    2024-03-27 17:14:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 17:14:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 17:14:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 17:14:03       87 阅读
  4. Python语言-面向对象

    2024-03-27 17:14:03       96 阅读

热门阅读

  1. 记录一次AP重置经历

    2024-03-27 17:14:03       42 阅读
  2. Windows安装electron卡住报错的问题

    2024-03-27 17:14:03       43 阅读
  3. ruoyi-ui(前端文件夹)

    2024-03-27 17:14:03       38 阅读
  4. 需求工程、需求规格说明的具体方式以及实践

    2024-03-27 17:14:03       41 阅读
  5. 蓝桥杯备赛心得

    2024-03-27 17:14:03       46 阅读
  6. DevOps是什么

    2024-03-27 17:14:03       37 阅读
  7. 多项式输出

    2024-03-27 17:14:03       43 阅读
  8. MNN详细介绍、安装和编译

    2024-03-27 17:14:03       45 阅读