【安卓小笔记】BottomNavigationView和ViewPager的使用

BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件。
BottomNavigationView和ViewPager一起使用是很常见的。所以简单的一起学习一下。

1.在 build.gradle 文件中增加依赖:

 compile 'com.github.ittianyu:BottomNavigationViewEx:1.2.2'

2.xml文件引用:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
        android:id="@+id/bottom_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/windowBackground"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_menu">

    </com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom_bar">

    </android.support.v4.view.ViewPager>


</RelativeLayout>

menu文件里放内容:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:orderInCategory="0"
        android:title="首页"
        android:icon="@drawable/mainpage"/>
    <item
        android:orderInCategory="1"
        android:title="消息"
        android:icon="@drawable/message"/>
    <item
        android:orderInCategory="2"
        android:title="通讯录"
        android:icon="@drawable/contact"/>
    <item
        android:orderInCategory="3"
        android:title="我的"
        android:icon="@drawable/my"/>

</menu>

当然还需要对应页面的viewpager:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="viewpager"
        android:gravity="center"
        android:textSize="20sp"
        android:textColor="@color/black"/>

</LinearLayout>
这样页面就搭建完成,接下来就需要在代码中整合起来。

3.Java代码实现

首先是Activity:
public class BottomNavigationViewActivity extends BaseActivity {
    @BindView(R.id.viewpager)
    ViewPager viewPager;
    @BindView(R.id.bottom_bar)
    BottomNavigationViewEx bottomNavigationView;

    private ViewpagerFragment mainpageFragment;
    private ViewpagerFragment messageFragment;
    private ViewpagerFragment contactFragment;
    private ViewpagerFragment myFragment;

    @Override
    public int getLayoutId() {
        return R.layout.activity_bottom_navigation_view;
    }

    @Override
    public void initView() {
        ButterKnife.bind(this);
        //设置文字大小
        bottomNavigationView.setTextSize(14);
        //禁用所有动画
        bottomNavigationView.enableShiftingMode(false);
        bottomNavigationView.enableItemShiftingMode(false);
        bottomNavigationView.enableAnimation(false);
        //监听器
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                viewPager.setCurrentItem(item.getOrder(),false);
                return true;
            }
        });

        //添加对应的viewpager页面,这里同一用了一个
        mainpageFragment = new ViewpagerFragment();
        messageFragment = new ViewpagerFragment();
        contactFragment = new ViewpagerFragment();
        myFragment = new ViewpagerFragment();
        List<Fragment> list = new ArrayList<>();
        list.add(mainpageFragment);
        list.add(messageFragment);
        list.add(contactFragment);
        list.add(myFragment);

        viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(),list));
        viewPager.setCurrentItem(0);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
            //viewpager滑动切换,底栏对应切换
                bottomNavigationView.getMenu().getItem(position).setChecked(true);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        viewPager.setOffscreenPageLimit(4);
    }

    @Override
    public void initData() {

    }

}

省略了viewpager的fragment和adapter;需要根据具体需求添加。

4.具体实现后参考图:

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值