框架----bottomactivity_viewpager_tabLayout_组合框架

本文详细介绍如何在Android应用中将BottomNavigationView与ViewPager组件结合使用,实现底部导航切换不同Fragment的功能。通过具体代码示例,展示了如何设置BottomNavigationView的监听器以响应不同的菜单项,并同步更新ViewPager的内容。

一.思路: bottomactivity里面放一个viewpage并3个Fragment并绑定
在第一个Fragment中放入tabLayouot和viewpager(绑定3个Fragment)并将其绑定

1.-bottomactivity-----代码

package com.example.zhoukao3_lx.ui.activity;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;

import com.example.zhoukao3_lx.R;
import com.example.zhoukao3_lx.Utils.BaseActivity;
import com.example.zhoukao3_lx.ui.fragment.FragmentOne;
import com.example.zhoukao3_lx.ui.fragment.FragmentThree;
import com.example.zhoukao3_lx.ui.fragment.FragmentTwo;

public class Main1Activity extends BaseActivity {

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                viewpager.setCurrentItem(0);
                return true;
            case R.id.navigation_dashboard:
                viewpager.setCurrentItem(1);
                return true;
            case R.id.navigation_notifications:
                viewpager.setCurrentItem(2);
                return true;
        }
        return false;
    }
};
private BottomNavigationView navigation;
private ViewPager viewpager;

@Override
protected int getContentViewid() {
    return R.layout.activity_main1;
}

@Override
protected void infodata() {

}

@Override
protected void infoview() {
    navigation = findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    viewpager = findViewById(R.id.viewpager1);
    viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            switch (i){
                case 0:
                    return new FragmentOne();
                case 1:
                    return new FragmentTwo();
                case 2:
                    return new FragmentThree();
            }
            return null;
        }

        @Override
        public int getCount() {
            return 3;
        }
    });

    viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
            switch (i){
                case 0:
                    navigation.setSelectedItemId(R.id.navigation_home);
                    break;
                case 1:
                    navigation.setSelectedItemId(R.id.navigation_dashboard);
                    break;
                case 2:
                    navigation.setSelectedItemId(R.id.navigation_notifications);
                    break;
            }
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });


}

}

2.第一个Fragment代码

package com.example.zhoukao3_lx.ui.fragment;

import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;

import com.example.zhoukao3_lx.R;
import com.example.zhoukao3_lx.Utils.BaseFragment;

public class FragmentOne extends BaseFragment {
private ViewPager viewpager;
private TabLayout tab;

@Override
protected int getFragmentview() {
    return R.layout.fragmentone;
}

@Override
protected void infoview(View view) {

    viewpager = view.findViewById(R.id.viewpager2);
    tab = view.findViewById(R.id.tab);
    viewpager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {

        String[] names = new String[]{"正在热映","即将上映"};

        @Override
        public Fragment getItem(int i) {

            switch (i){
                case 0:
                    return new FragmentHome();
                case 1:
                    return new FragmentMy();
            }

            return null;
        }
        @Override
        public int getCount() {
            return names.length;
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return names[position];
        }
    });
    tab.setupWithViewPager(viewpager);

}

@Override
protected void infodata() {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值