BottomNavigationBar+viewPager实现可滑动的底部导航栏_bottomnavigationbar和viewpager-程序员宅基地

技术标签: 2018  BottomNavigationBar  底部导航  Android  

1.首先要在grade里依赖下
com.ashokvarma.android:bottom-navigation-bar:2.0.4
2.在布局文件里使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/px_1"
        android:background="@color/tab_text_default"
        />

    <com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:id="@+id/bottom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:bnbBackgroundColor="@color/bg_gray"
        />
</LinearLayout>

3.对bottomNavigationBar的一些设置

 mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
        mBottomNavigationBar.setTabSelectedListener(this);
        //设置监听
        mBottomNavigationBar.clearAll();
        mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
        //还用一种mode是Shifting,大家可以自己试下有何区别
        mBottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
        mBottomNavigationBar
                .addItem(new BottomNavigationItem(R.mipmap.icon_home_on, getString(R.string.text_main_tab_home))
                        .setInactiveIconResource(R.mipmap.icon_home_off)
                        .setActiveColorResource(R.color.tab_text_selected)
                        .setInActiveColorResource(R.color.tab_text_default))
//                        .setBadgeItem(badgeItem))
                .addItem(new BottomNavigationItem(R.mipmap.icon_record_on, getString(R.string.text_main_tab_record))
                        .setInactiveIconResource(R.mipmap.icon_record_off)
                        .setActiveColorResource(R.color.tab_text_selected)
                        .setInActiveColorResource(R.color.tab_text_default))
                        //配置图片文字及选中时的颜色
                .setFirstSelectedPosition(0)    //默认位置就是0
                .initialise();//初始化

4.初始化viewPager

private void initViewPager() {
        mViewPager = (ViewPager) findViewById(R.id.view_pager);

        mFragments = new ArrayList<>();
        mFragments.add(MainFragmentOne.newInstance());
        mFragments.add(MainFragmentTwo.newInstance());

        mViewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager(), mFragments));
        mViewPager.addOnPageChangeListener(this);
        mViewPager.setCurrentItem(0);
    }
 class SectionsPagerAdapter extends FragmentPagerAdapter {
    
        List<Fragment> fragments;

        public SectionsPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }

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

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

5.切换或滑动时设置参数

 @Override
    public void onTabSelected(int position) {
        mViewPager.setCurrentItem(position);
    }

 @Override
    public void onPageSelected(int position) {
        mBottomNavigationBar.selectTab(position);
    }

这些弄完功能就实现了,图就不贴了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GuldanHu/article/details/81738891

智能推荐

dojo中的dgrid使用时注意事项_fly/dgrid/selector用法-程序员宅基地

文章浏览阅读3.5k次。最近在使用dojo的dgrid控件,遇到的问题还是蛮多的,有些细节不注意的话,很难符合你的要求,而且找个解决方案都没有。求人不如求己,经过我认真地查看dgrid的demo,主要是这个地址是:http://dgrid.io/js/dgrid/demos/laboratory/选择左边的一些控件,然后查看右边表格的效果,总体来说做的还可以。ok,进入正题。这个是我想达到的效果:_fly/dgrid/selector用法

能力更强,医疗单据识别+医疗知识库校验_针对医疗表格识别进行优化-程序员宅基地

文章浏览阅读183次。此次更新升级,包括门诊住院发票识别、医疗费用清单识别、出院小结识别均增加了医疗知识库功能,除了单纯的OCR识别,用户可以选择对识别结果进行医疗知识库匹配校验。在线体验门诊住院发票、医疗费用清单识别时,可以选择相应的省市医保目录进行核对;在线体验出院小结识别,则可以选择匹配相应的ICD-10编码及名称。..._针对医疗表格识别进行优化

在线考试系统(源码+mysql+文档)-程序员宅基地

文章浏览阅读573次,点赞9次,收藏7次。后端SSM框架结合了Spring的依赖注入和事务管理、SpringMVC的模型-视图-控制器架构以及MyBatis的数据持久化功能,为后端开发提供全面的支持。在线考试系统app03182的意义不仅仅在于其技术层面的突破。更重要的是,它对教育公平性的提升、资源优化配置以及学习效率的提高具有不可估量的影响。它的出现,标志着传统考试方式的一大跨越,使得教与学的互动不再受时间和空间的限制,极大地拓宽了教育的边界。它通过提供创新的考试方式,促进了教育评价体系的完善,对实现教育现代化、促进社会进步具有深远的意义。

google play 上架更改成自己生成的应用签名实践_google play 签名生成-程序员宅基地

文章浏览阅读377次,点赞2次,收藏2次。google play 上架卡关在更改应用签名上。不想用google生成 签名,自己用keytool生成的密钥来用。为了顺利,其实可以放弃开发时自己测试用打包的密钥,重新生成新的密钥来配合本文章,会有意想不到的的顺利——可能是玄学!_google play 签名生成

ubuntu 安装 python3.8_ubuntu python3.8安装不了-程序员宅基地

文章浏览阅读955次。Windows 10 里面的 linux子系统,里面有 python2.x 和 python3.6。想要升级到 python3.8,却不成功。网上请教了高人,说要先升级 ubuntu。于是,执行:apt-get update 升级 ubuntu;然后再执行:apt-get install python3.8成功开始安装了。另外一个概念:python 的多个版本,可以在同一个 linux 底下共存。我的 linux 底下输入:python 进入的是 python2..._ubuntu python3.8安装不了

iOS根据字符串计算UITextView高度_ios uitextview 字符串高度-程序员宅基地

文章浏览阅读3.3k次。iOS计算字符串高度,有需要的朋友可以参考下。方法一:ios7.0之前适用/** @method 获取指定宽度width,字体大小fontSize,字符串value的高度 @param value 待计算的字符串 @param fontSize 字体的大小 @param Width 限制字符串显示区域的宽度 @result float 返回的高度 */- (float_ios uitextview 字符串高度

随便推点

零基础学大数据开发,Spark 学习资源分享-程序员宅基地

文章浏览阅读225次。本系列是基于目前最新的 spark 1.6.0 系列开始的,spark 目前的更新速度很快,记录一下版本好还是必要的。 来源:segmentfault1. 书籍Learning Spark Mastering Apache Spark2. 网站official site user mailing list spark channel on youtube ...

CISCO WLC的配置备份与导入_思科wlc配置b备份-程序员宅基地

文章浏览阅读1w次。导出配置: 导入配置 原有配置 删除 导入配置,设备会重启_思科wlc配置b备份

云计算——常见集群策略_虚拟机 dpm-程序员宅基地

文章浏览阅读3.7k次,点赞65次,收藏70次。本章将会讲解云计算中常见的集群策略,了解什么是集群。_虚拟机 dpm

手动脱壳[HZNUCTF 2023 final]signin-程序员宅基地

文章浏览阅读1.3k次,点赞42次,收藏20次。手动脱壳时时刻关注esp寄存器,来找到正真程序的入口。

Qt获取控件位置,坐标总结_qt 按钮位置坐标-程序员宅基地

文章浏览阅读8.9k次。总结的结果是:QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标。总结一:经过试验,QMouseEvent::globalPos() 和 QCursor::pos()效果一样,但是Qt帮助文档说不一样,可是我获得值确实相同的。QCursor::pos() == QMouseEvent::globalPos() 都是全局坐标;总结_qt 按钮位置坐标

redis持久化之RDB_redis rdf时间-程序员宅基地

文章浏览阅读137次。什么是RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且..._redis rdf时间

推荐文章

热门文章

相关标签