美文网首页资料 | 汇总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开始
  • b24fb91a729f:Failed to resolve: com.hjm:BottomTabBar:1.2.2 为什么引入失败啊 我用的是阿里的maven 刚转AS不大懂
  • 264d3371e36c:在eclipse里面怎么使用,刚入门的超级菜鸟,请大佬解答,尽可能详细,非常感谢
    史上最懒程序猿:@安卓入门菜菜鸟 这个,可能得稍微拖一拖,近期项目准备上线,可能拿不出时间来,抱歉了:pray:
    264d3371e36c:@史上最懒程序猿 能做个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:
  • dcabe6199e99:在使用过程中发现 getTabBar().setVisibility(View.VISIBLE); 不能动态隐藏和显示,能不能加上动态隐藏和显示的功能 ?
  • dcabe6199e99:例子中没有如何给 Fragment传值,请问如何传值给Fragment呢?
    史上最懒程序猿:@ryan3216 点击事件中有position,这个就是记录选中第几个的
    dcabe6199e99:请问,当前的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 “ 一直报空
  • c2924b7f3b57:1.1.3 提示setSpot方法找不到
    史上最懒程序猿:@LiJunWen 最新的是1.2.0:joy:
    c2924b7f3b57:已经是升级到最新了 怎么会没这个方法呢
  • 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页。
    9b995b5447bb:你好,楼主 我添加了这个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的时候,都会调用这个方法
  • 7c28a6afa526:给每个Fragment设置了的名字能提取出来吗
    史上最懒程序猿:@空指针_异常 可以的,你看看我补充的那篇说明,里边切换监听事件中有个name,这个就是标题的文字
  • e3e69254ae72:请问这个是java代码吗?不太懂怎么引用,请指教
    史上最懒程序猿:@阅读成瘾 额,你用的是eclipse?
    6fed6fce3f39:我这里面怎么没有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选项吗
  • 941f57585004: 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