美文网首页资料 | 汇总Android研究院IT晋级之路
超简单,几行代码搞定Android底部导航栏

超简单,几行代码搞定Android底部导航栏

作者: 史上最懒程序猿 | 来源:发表于2017-02-19 14:03 被阅读33535次

    咳咳,答应过年增加新功能的,没想到拖到现在,延迟了一个来月,尴尬,尴尬
    那个,我们先忽略这尴尬的事情吧,进入正题才是最重要滴

    老规矩,先上效果图:


    BottomTabBar.png

    跟原来的图有个很明显的区别,你们也一定都发现了,对不对。那么显眼的小红点,一定都看到了吧。

    当然除了这个,还增加了一项功能,虽然不是很明显,但相信也有小伙伴发现了吧,截图的这俩手机屏幕明显大小不同,但是底部导航栏的大小还是相差不大滴。

    是的,你们没有看多,这次不仅增加了小红点功能,还增加了底部导航栏的适配,你没有听错,以后底部导航栏也不用那些dp、sp了,都按照UI妹子们标注的px来就可以了,再也不用为了底部导航栏去跟UI妹子解释啥叫dp了。

    好了,效果图展示完了,现在该进入枯燥的使用介绍了。


    由于这次改动有点大,所以,先介绍下上个稳定版本的用法,到底是用最新的,还是用原来的,就看各位小伙伴的意愿了

    上个稳定版本是1.1.3的,引用方式如下
    compile 'com.hjm:BottomTabBar:1.1.3'

    具体用法如下(备注都加好了,我也就不多废话了):

        <com.hjm.bottomtabbar.BottomTabBar
            android:id="@+id/bottom_tab_bar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"  
            hjm:tab_bar_background="#FFFFFF"                     //BottomTabBar的整体背景颜色
            hjm:tab_divider_background="#FF0000"                 //分割线背景
            hjm:tab_divider_height="5dp"                         //分割线高度
            hjm:tab_font_size="6sp"                              //文字尺寸
            hjm:tab_img_font_padding="0dp"                       //图片文字间隔
            hjm:tab_img_height="30dp"                            //图片高度
            hjm:tab_img_width="30dp"                             //图片宽度
            hjm:tab_isshow_divider="true"                        //是否显示分割线
            hjm:tab_padding_bottom="5dp"                         //下边距
            hjm:tab_padding_top="8dp"                            //上边距
            hjm:tab_selected_color="#000000"                     //选中的颜色
            hjm:tab_unselected_color="@color/colorPrimary"/>     //未选中的颜色
    
    private BottomTabBar mBottomTabBar;
    
    mBottomTabBar = (BottomTabBar) findViewById(R.id.bottom_tab_bar);
    
    mBottomTabBar
        .init(getSupportFragmentManager())//初始化方法,必须第一个调用;传入参数为V4包下的FragmentManager
        .setImgSize(50,50)//设置ICON图片的尺寸
        .setFontSize(8)//设置文字的尺寸
        .setTabPadding(4,6,10)//设置ICON图片与上部分割线的间隔、图片与文字的间隔、文字与底部的间隔
        .setChangeColor(Color.DKGRAY,Color.RED)//设置选中的颜色、未选中的颜色
        .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)//设置文字、一张图片、fragment
        .addTabItem("第二项", R.mipmap.erweima, R.mipmap.ic_launcher, TwoFragment.class)//设置文字、两张图片、fragment
        .isShowDivider(false)//设置是否显示分割线
        .setTabBarBackgroundColor(Color.WHITE)//设置底部导航栏颜色
        .setTabBarBackgroundResource(R.mipmap.ic_launcher)//设置底部导航栏的背景图片【与设置底部导航栏颜色方法不能同时使用,否则会覆盖掉前边设置的颜色】
        .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {//添加选项卡切换监听
            @Override
            public void onTabChange(int position, String name) {
                //这里不用说,你们也都看的懂了
                //暂时就返回了这俩参数,如果还有什么用的比较多的参数,欢迎留言告诉我,我继续添加上
                Log.i("TGA", "位置:" + position + "      选项卡的文字内容:" + name);
            }
        })
        .setCurrentTab(0);//设置当前选中的Tab,从0开始
    

    最新版本是1.2.0的,引用方式如下
    compile 'com.hjm:BottomTabBar:1.2.0'

        <com.hjm.bottomtabbar.BottomTabBar
            android:id="@+id/bottom_tab_bar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"  
            hjm:tab_bar_background="#FFFFFF"                     //BottomTabBar的整体背景颜色
            hjm:tab_divider_background="#FF0000"                 //分割线背景
            hjm:tab_font_size="14px"                             //文字尺寸
            hjm:tab_img_font_padding="0"                       //图片文字间隔
            hjm:tab_img_height="70px"                            //图片高度
            hjm:tab_img_width="70px"                            //图片宽度
            hjm:tab_isshow_divider="true"                        //是否显示分割线
            hjm:tab_padding_bottom="5px"                        //下边距
            hjm:tab_padding_top="5px"                           //上边距
            hjm:tab_selected_color="#000000"                     //选中的颜色
            hjm:tab_unselected_color="@color/colorPrimary"/>     //未选中的颜色
    
     mBottomBar = findViewById(R.id.bottom_bar);
    
            mBottomBar.init(getSupportFragmentManager(), 720, 1280)
    //                .setImgSize(70, 70)
    //                .setFontSize(14)
    //                .setTabPadding(5, 0, 5)
    //                .setChangeColor(Color.parseColor("#FF00F0"),Color.parseColor("#CCCCCC"))
                    .addTabItem("第一项", R.mipmap.home_selected, R.mipmap.home, OneFragment.class)
                    .addTabItem("第二项", R.mipmap.list, TwoFragment.class)
                    .addTabItem("第三项", R.mipmap.user, ThreeFragment.class)
    //                .isShowDivider(true)
    //                .setDividerColor(Color.parseColor("#FF0000"))
    //                .setTabBarBackgroundColor(Color.parseColor("#00FF0000"))
                    .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
                        @Override
                        public void onTabChange(int position, String name, View view) {
                            if (position == 1)
                                mBottomBar.setSpot(1, false);
                        }
                    })
                    .setSpot(1, true)
                    .setSpot(2, true);
    

    其实1.2.0与1.1.3区别并不大,只有4点改动:

    1、去掉了原来对分割线高度的设置

    现在默认的,分割线高度都是设置的1个像素。这里以后也固定都用这个默认的高度了,不再对外提供修改的方法。

    2、xml文件中,不再使用dp、sp,都需要改为px

    这就是新增加的适配了,多的也不说了,你们都懂的

    3、init方法中新增两个变量:标准尺寸

    标准尺寸,就是UI妹子给你提供的效果图的屏幕尺寸,只要在init()方法里添加上标准尺寸,你就可以放肆的使用px了

    4、新增方法setSpot(int index,boolean isShow)

    这个方法就是控制小红点显示的方法了,index就是需要显示或者隐藏小红点的TabItem,isShow是一个boolean类型的参数,他是控制小红点是否显示的,如果为true,就会显示小红点;如果为false,就会隐藏小红点

    介绍到这里,超简单的底部导航栏,第二阶段就可以告一段落了。以后还会持续优化,完善的。
    第三阶段我打算封装一下有中间凸起的底部导航栏,这个功能我本地已经做了,但是封装进去的时候,封装的不理想,这次就没有上线,留作下次了。

    最后,再上个GitHub地址

    相关文章

      网友评论

      • b079da17fb9e:请问我用Android自带的图片为什么会出现阴影和边框
        b079da17fb9e:@史上最懒程序猿 Mainactivity.java
        mBottomBar = findViewById(R.id.bottom_tab_bar);
        mBottomBar.init(getSupportFragmentManager(), 720, 1280)
        .addTabItem("主页", R.mipmap.home_selected, R.mipmap.home,FirstPager.class)
        .addTabItem("社区", R.mipmap.chat_selected,R.mipmap.chat,SecondPager.class)
        .addTabItem("视频", R.mipmap.video_selected,R.mipmap.video,ThirdPager.class)
        .addTabItem("更多", R.mipmap.more_selected,R.mipmap.more, FourthPager.class)
        .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
        @Override
        public void onTabChange(int position, String name, View view) {
        if (position == 1)
        mBottomBar.setSpot(1, false);
        if (position == 2)
        mBottomBar.setSpot(2, false);
        }
        })
        .setSpot(1, true)
        .setSpot(2, true);
        //layout部分
        <com.hjm.bottomtabbar.BottomTabBar
        android:id="@+id/bottom_tab_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        hjm:tab_bar_background="#FFFFFF"
        hjm:tab_divider_background="#FF0000"
        hjm:tab_font_size="14px"
        hjm:tab_img_font_padding="0"
        hjm:tab_img_height="70px"
        hjm:tab_img_width="70px"
        hjm:tab_isshow_divider="true"
        hjm:tab_padding_bottom="5px"
        hjm:tab_padding_top="5px"
        hjm:tab_selected_color="#000000"
        hjm:tab_unselected_color="@color/colorPrimary" />
        -_-||还没改呢,就这样
        史上最懒程序猿:@十年饮冰_8e14 方便把代码贴出来不
        b079da17fb9e:用安卓自带的图片放到底部导航栏里面会出现边框和阴影,但是我没有设置啊
      • 619eee7305d8:想问下为啥我写的<com.hjm.bottomtabbar.BottomTabBar/>这句会一直报错呢?我是用eclipse做的,看下面评论说找源码,不知道在哪找。。层主能不能帮帮忙,教教我,写这里会被看见吗?
        史上最懒程序猿:@Mmy_b40b 可以直接去github上下载,文章里有github地址
        619eee7305d8:@史上最懒程序猿 可是源码在哪下呀
        史上最懒程序猿:@Mmy_b40b eclipse得话,得把源码下载下来,导入项目,然后项目引用源码才可以
      • 鹿乐吾:请问可以设置指定选中某个tab并展示对应的fragment吗?
        鹿乐吾:@史上最懒程序猿 OK,了解
        史上最懒程序猿:@PinkLu 可以的,setCurrentTab(0);//设置当前选中的Tab,从0开始
      • Negro_f9b8:Failed to resolve: com.hjm:BottomTabBar:1.2.2 为什么引入失败啊 我用的是阿里的maven 刚转AS不大懂
      • 安卓入门菜菜鸟:在eclipse里面怎么使用,刚入门的超级菜鸟,请大佬解答,尽可能详细,非常感谢
        史上最懒程序猿:@安卓入门菜菜鸟 这个,可能得稍微拖一拖,近期项目准备上线,可能拿不出时间来,抱歉了:pray:
        安卓入门菜菜鸟:@史上最懒程序猿 能做个eclipse完整demo吗:pray:
        史上最懒程序猿:eclipse的话,直接下载源码,把bottomtabbar2这个Library导入项目中吧
      • 5c614b5b6a2b:大佬您好,项目里借用了您的代码,但是我有一个问题一直困扰我实现不了,如何在一个选项卡中的fragment中获取另一个fragment的实例呢?
        每个fragment的布局是在宿主activity建立的时候就加载了,还是在切换到该fragment的时候才加载
        史上最懒程序猿:@bug_writer Fragment的布局,是在切换的时候,才加载的,不是刚打开App就加载所有的Fragment的。至于获取另一个Fragment的实例,这个,我没有什么好的建议,抱歉了
      • 860aa49d8ec6:想问一句,如何实现点击一个下方的底部导航栏,就刷新该Fragment
        860aa49d8ec6:@史上最懒程序猿 谢谢大佬:smile:
        史上最懒程序猿:@薄情i_7066 public void onHiddenChanged(boolean hidden),在fragment中设置这个方法,每次显示的时候,都会走这个方法的
      • 0d3707dba709:艾 各种报错 用不了
      • AOCCG:什么时候更新?
        史上最懒程序猿:@AOCCG 如果是有bug,我会及时修改,但是新增功能应该暂时不会添加了,哎,公司压迫,都快不干Android,再干,饭碗就没了:joy:
      • ryan3216:在使用过程中发现 getTabBar().setVisibility(View.VISIBLE); 不能动态隐藏和显示,能不能加上动态隐藏和显示的功能 ?
      • ryan3216:例子中没有如何给 Fragment传值,请问如何传值给Fragment呢?
        史上最懒程序猿:@ryan3216 点击事件中有position,这个就是记录选中第几个的
        ryan3216:请问,当前的fragment怎么知道自己是第几个 fragment ?
        史上最懒程序猿:@ryan3216 //宿主activity中的getTitles()方法
        public String getTitles(){
        return "hello";
        }

        //Fragment中的onAttach方法
        @Override
        public void onAttach(Activity activity) {
        super.onAttach(activity);
        titles = ((MainActivity) activity).getTitles();
        }
        //通过强转成宿主activity,就可以获取到传递过来的数据

        可以这样通过get方法,获取activitiy中的参数
      • DaShanENG:java代码中 import com.hjm.simple.fragment.FourFragment; simple标红,是怎么回事呀
        史上最懒程序猿:@好人_fdf2 额,这个你不能直接用的,这个fragment是我本地的,你需要在你的项目中创建fragment,然后才能使用的
      • DaShanENG:为啥我在布局文件里 hjm标签是标红的用不了的呢 com.hjm.bottomtabbar.BottomTabBar倒是正常的
        史上最懒程序猿:@好人_fdf2 需要在根布局加上这行代码:xmlns:hjm="http://schemas.android.com/apk/res-auto";
      • 265e89960031:大佬,有没有隐藏标签栏的方法呢?
        史上最懒程序猿:@265e89960031 :joy: :joy: 把这事给忘了,我加一个方法吧 ,获取底部Tab那块的View
        265e89960031:@史上最懒程序猿 这个不就联动上边的fragment也隐藏了吗
        史上最懒程序猿:@265e89960031 这个没有提供方法,不过你可以直接设置BottomTabBar.setVisibilt(Visibilt.Gone)
      • normidar:这个插件怎么用啊,有demo吗?
        史上最懒程序猿:@normidar 有的,github上有
      • AsianElite:我正入门的路上,向楼主学习
      • 4d226614f116:作者我想问一下,为什么6.0的setCurrentTab(int) 方法没问题,7.0就报空?
        4d226614f116:,在6.0的手机没问题,我的华为7.0 测试机 ”Attempt to invoke virtual method 'void com.hjm.bottomtabbar.custom.CustomFragmentTabHost.setCurrentTab(int)' on a null object reference “ 一直报空
      • LiJunWen:1.1.3 提示setSpot方法找不到
        史上最懒程序猿:@LiJunWen 最新的是1.2.0:joy:
        LiJunWen:已经是升级到最新了 怎么会没这个方法呢
      • 14fa23779242:在我的项目里面直接引入com.hjm:BottomTabBar:1.1.3就可以用吗
        史上最懒程序猿:嗯,目前1.1.3就是最新的,这个周末,也就是清明节,我会再测试测试,然后发布一版新的,增加了两个新的功能:1、显示小红点功能,2、增加适配功能
      • Junwen_0131:菜单栏挡住下面的内容怎么解决 比如listview最后一项被菜单栏挡住了
      • 10b405bd4fc0:不知道怎么使用该属性求大神指导
        史上最懒程序猿:你想用哪个属性?
      • su嗯哦:小姐姐,过完年了,想看小红点。。。
        史上最懒程序猿:过年重新写了一下,不过自己都不太满意,就没更新上去,所以就拖延了:disappointed_relieved: ,不过目前一直在调整中,过段时间会发布一下的。
        还有,我不是小姐姐,我是怪蜀黍:joy:
      • su嗯哦:你好,想问一下,咱这个可以在右上角添加红点吗?
      • 静智:小小提问 如果tab上面需要加未读消息。怎么处理好一些
        史上最懒程序猿:@文飞_bfa1 这个功能暂时还没有,不过年假期间正好打算加一下,可以的话,年后可以再来看看,或许就会支持这个功能了:smile:
      • d009154df778:代码如何导入?
        呆呆的妹儿:@一路漫漫 做程序需要有严密的思维逻辑,那么,就在忙碌的工作后,看看侦探小说吧?在放松中培养自己的逻辑思维,来我这里看看吧?猜猜谁是凶手……
        史上最懒程序猿:@一路漫漫 build.gradle文件里加上compile 'com.hjm:BottomTabBar:1.1.3'
      • 那一抹无言的芯痛:楼主。BottomTabBar想在其中一个选项上加Badge红点提示怎么加
        史上最懒程序猿:@那一抹无言的芯痛 这个功能还不支持,可能会晚会加一下
      • inrc:请问我想要加右上角的OptionsMenu没有反映是为什么啊,不管写在activity里还是fragment里面都没有出来
        史上最懒程序猿:@inrc 不知道你是怎么写的,这个真不好说
      • 67d569a7e591:怎么给单独的文字设置大小呢
        史上最懒程序猿:这个不能设置,所有tab按钮的文字都是统一的样式
      • bwzhny:有心人,天不负
      • 看不见深海的灆:怎么可以动态的修改切换的图片, 或者获取指定的图片
      • 我鸟:能不能切换tab时顺便切换icon?
        史上最懒程序猿: @我鸟 额,你说的这个被压,是什么意思😳,不太明白😂
        我鸟:@古月金子皿哈哈哈,还有问题就是图标怎么才能不被压?
        史上最懒程序猿:可以的,这个功能已经加上了,在addTabItem()中添加两个图片就可以,具体的可以参考“超简单,几行代码搞定Android底部导航栏-----补充”
      • 阿笠卤鸡:大神 什么时候可以加个默认页面的功能,,
        阿笠卤鸡:@古月金子皿 谢谢大神啦!非常感谢!
        电钻飞行:请教以下,我按照你的方法引用,为什么程序是崩溃的?是我哪里没设置好么?
        史上最懒程序猿: @c23911ed6641 昨晚刚加了😂,版本号你改成1.1.3,里边加了个setCureentTab方法,里边传入序号就可以了
      • 虎_cade:图片与文字之间的距离太大了,怎么调小呢:sweat:
        虎_cade:@古月金子皿 设为负值以后还是会有间隙 并且会遮盖住下面的字
        另外还有一个问题,项目中需要手动设置显示哪个tab页面,想使用 TabHost 的 setCurrentTab 但是获取不到CustomFragmentTabHost,能不能在控件中暴露一个get方法?万望回复:pray:
        史上最懒程序猿: @虎_cade 设置为0都会有间隙,你可以设置为负值
      • 291040bf4044:请问楼主如果我要在第二项中点击按钮后跳转到一个activity然后在关闭这个activity后回到的还是在第二项界面,请问怎么实现该效果啊?请多多关照
        史上最懒程序猿:直接跳转另一个activity就可以了,打个比方,你再Activity1中添加了BottomTabBar,跳转Activity2的时候,直接跳转就可以了,跳转的时候,别finish Activity1,等返回的时候,finish activity2就可以了
      • 贰yang:你好,我开发的app有这么一个需求,就是第一页有个按钮,点击之后,会直接跳到第二页。你这个能实现吗?
        史上最懒程序猿:好的,你提的这个需求,我也加一下,提供一个方法,设置跳转到哪一个Tab页。
        lgz2222:你好,楼主 我添加了这个compile 'com.hjm:BottomTabBar:1.0.0'这个依赖后 没找到切换tab的这个监听
        贰yang:这个功能实现起来并不难,我目前还没测试,我是在BottomTabBar类中加了一个如下这个方法:
        public void setCurrentTab(int index){
        if (mTabHost != null){
        mTabHost.setCurrentTab(index);
        }
        }

        如果能过,这个也能实现 @GoChat 的需求
      • 看不见深海的灆:这个fragment切换的时候不走生命周期方法
        史上最懒程序猿:fragment切换的时候,这里不是add,是隐藏和显示,走的是onHiddenChanged(boolean hidden),这个方法
      • 芝麻豆D:能不能改变点击时改变图片样式
        8471b254f23c:@古月金子皿 可以切换选中状态和未选中状态的图片?
        史上最懒程序猿:你的意思是两张不同的图片进行切换?
      • 逝风不名:麻烦问下,如果我每次切换fragment的时候,都要刷新数据,要怎么去实现,新手求指教
        史上最懒程序猿:你可以在fragment的onHiddenChanged()方法里做处理,每次隐藏和显示这个fragment的时候,都会调用这个方法
      • 空指针_异常:给每个Fragment设置了的名字能提取出来吗
        史上最懒程序猿:@空指针_异常 可以的,你看看我补充的那篇说明,里边切换监听事件中有个name,这个就是标题的文字
      • e3e69254ae72:请问这个是java代码吗?不太懂怎么引用,请指教
        史上最懒程序猿:@阅读成瘾 额,你用的是eclipse?
        东野的解忧杂货店:我这里面怎么没有gradle这个文件 ?
        史上最懒程序猿:@X_15ac 直接在gradle文件里引用“ compile 'com.hjm:BottomTabBar:1.1.1' ”就可以
      • jobs_chen:支持 ConstraintLayout布局么?
        jobs_chen:@jobs_chen 这样写有问题么
        jobs_chen:@古月金子皿 <com.hjm.bottomtabbar.BottomTabBar
        android:id="@+id/bottom_tab_bar"
        android:layout_width="0dp"
        android:layout_height="49dp"
        hjm:tab_divider_background="#FF0000"
        hjm:tab_divider_height="5dp"
        hjm:tab_font_size="6sp"
        hjm:tab_img_font_padding="0dp"
        hjm:tab_img_height="30dp"
        hjm:tab_img_width="30dp"
        hjm:tab_isshow_divider="true"
        hjm:tab_padding_bottom="5dp"
        hjm:tab_padding_top="8dp"
        hjm:tab_selected_color="#000000"
        hjm:tab_unselected_color="@color/colorPrimary"

        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        />



        </android.support.constraint.ConstraintLayout>
        史上最懒程序猿:@jobs_chen 支持的,我测试了下,用ConstraintLayout布局没问题的
      • jobs_chen: mBottomTabBar = (BottomTabBar) findViewById(R.id.bottom_tab_bar);
        mBottomTabBar.init(getSupportFragmentManager())
        .addTabItem("第一项", R.mipmap.ic_launcher, OneFragment.class)
        .addTabItem("第二项", R.mipmap.ic_launcher, TwoFragment.class)
        .addTabItem("第三项", R.mipmap.ic_launcher, ThreeFragment.class)
        .addTabItem("第四项", R.mipmap.ic_launcher, FourFragment.class);
        这句代码加上就run fail?什么鬼?
        jobs_chen:@古月金子皿

        mBottomTabBar.init(getSupportFragmentManager());

        这句代码加上,run不起来!
        jobs_chen:@古月金子皿 import android.support.v4.app.FragmentActivity;
        import android.view.View;
        import android.view.Window;
        import android.view.WindowManager;

        import com.amap.api.maps.MapView;
        import com.henlinkeji.shenbian.shenbian.TabFragment.FourFragment;
        import com.henlinkeji.shenbian.shenbian.TabFragment.OneFragment;
        import com.henlinkeji.shenbian.shenbian.TabFragment.ThreeFragment;
        import com.henlinkeji.shenbian.shenbian.TabFragment.TwoFragment;
        import com.hjm.bottomtabbar.BottomTabBar;

        public class MainActivity extends FragmentActivity {
        继承自 v4包下的FragmentActivity 也不管用, Application stop、
        史上最懒程序猿:@jobs_chen 你得确保你用的Activity要继承v4包下的FragmentActivity
      • 萧喃:作者能加上可以设置默认选中选项状态就更完美了。。。。。
        萧喃: @古月金子皿 对啊!目前这个版本貌似默认的是第一个添加tab
        萧喃: @GoChat 对啊!目前貌似只有默认添加的第一个tab是选中状态!
        史上最懒程序猿:你的意思是添加默认选中哪一个Tab选项吗
      • 蜗牛的小精神: java.lang.ClassCastException: position.shareposition.MainActivity cannot be cast to android.support.v4.app.Fragment

        大神能帮忙看下这个为什么吗?我看 直接import android.support.v4.app.Fragment 都可以找到啊~
        加了这个啊
        compile 'com.android.support:support-v4:26+'
        史上最懒程序猿:@蜗牛的小精神 抱歉,现在才看到这个问题,这个问题应该是需要传入v4包fragment的时候,传入了MainActivity导致的,你查看下代码,如果可以的话,你也可以吧你的代码贴出来,我给你看下
      • moushao:楼主你好,我用你的资源,但发现一个问题,当切换fragment的时候,没办发切换图片资源?比如选中的是红色,没选中的是白色,但是我看你的第一张镇楼效果图又是对的,是不是哪儿我弄错了,求指点,谢谢!
        史上最懒程序猿:方便的话可以让我看一下你的代码吗,也可以加我微信(个人资料里有微信二维码),在微信上聊
      • 一口仙气:真是羡慕,真的想让你指导一下
        史上最懒程序猿:@威威一笑丶 这真不是谦虚,我也是Android刚入门,先用学到手的知识写点东西,以后研究深入了再修改,写出这些东西了也是希望大家帮我找找里面存在的问题
        一口仙气: @古月金子皿 您也太谦虚了
        史上最懒程序猿: @威威一笑丶 我水平也一般,指导就算了,大家一起交流交流吧😄

      本文标题:超简单,几行代码搞定Android底部导航栏

      本文链接:https://www.haomeiwen.com/subject/zqarwttx.html