Android开发:BottomNavigationBar实现底部标题栏

 BottomNavigationBar实现底部标题栏

 

 一、添加依赖

andriod studio gradle加载添加依赖:

//底部导航栏样式BottomNavigationBar
compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.3'

 

二、正文

/** * setMode() 内的参数有三种模式类型:

 MODE_DEFAULT 自动模式:导航栏Item的个数<=3 用 MODE_FIXED 模式,否则用 MODE_SHIFTING 模式

 MODE_FIXED 固定模式:未选中的Item显示文字,无切换动画效果。

 MODE_SHIFTING 切换模式:未选中的Item不显示文字,选中的显示文字,有切换动画效果。 

 

/** * setBackgroundStyle() 内的参数有三种样式

 BACKGROUND_STYLE_DEFAULT: 默认样式 如果设置的Mode为MODE_FIXED,将使用BACKGROUND_STYLE_STATIC

如果Mode为MODE_SHIFTING将使用BACKGROUND_STYLE_RIPPLE。

 BACKGROUND_STYLE_STATIC: 静态样式 点击无波纹效果

 BACKGROUND_STYLE_RIPPLE: 波纹样式 点击有波纹效果 

 

2.1、MainActivity.java 文件

public class MainActivity extends AppCompatActivity {
    private BottomNavigationBar mBottomNavigationBar;
    private TextBadgeItem textBadgeItem;
    private ShapeBadgeItem shapeBadgeItem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        setView();
    }

    /**
     * 初始化控件
     */
    private void initView() {
        mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
        textBadgeItem = new TextBadgeItem();

        //显示信息提示数字
        textBadgeItem.setBorderWidth(4)
                .setBackgroundColor(R.color.colorAccent)
                .setAnimationDuration(200)
                .setText("3").
                setHideOnSelect(false);

        //显示信息提示图形
        shapeBadgeItem = new ShapeBadgeItem();
        shapeBadgeItem.setShapeColorResource(R.color.colorPrimary)
                .setGravity(Gravity.TOP | Gravity.END)
                .setHideOnSelect(false);
    }

    /**
     * 配置控件
     */
    private void setView() {
        mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED)
                .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
        mBottomNavigationBar.setActiveColor(R.color.light_blue);

        mBottomNavigationBar.addItem(new BottomNavigationItem(R.drawable.ic_tabbar_home_press, "工具箱")
                .setInactiveIcon(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_tabbar_home_nor))
                .setBadgeItem(textBadgeItem))
                .addItem(new BottomNavigationItem(R.drawable.ic_tabbar_timetable_press, "课程表")
                        .setInactiveIcon(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_tabbar_timetable_nor)))
                .addItem(new BottomNavigationItem(R.drawable.ic_tabbar_message_press, "小纸条")
                        .setInactiveIcon(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_tabbar_message_nor))
                        .setBadgeItem(shapeBadgeItem))
                .addItem(new BottomNavigationItem(R.drawable.ic_tabbar_my_press, "我")
                        .setInactiveIcon(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_tabbar_my_nor)))
                .setFirstSelectedPosition(0)//设置第一个菜单为选中状态
                .initialise();//必须调用该方法,才会生效
        //设置第一个要显示的Fragment
        replace(new UtilFragment());
        //BottomNavigationBar选项卡,选择事件
        mBottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {
            @Override
            public void onTabSelected(int position) {//未选中 -> 选中
                switch (position) {
                    case 0:
                        replace(new UtilFragment());
                        break;
                    case 1:
                        replace(new ClassScheduleFragment());
                        break;
                    case 2:
                        replace(new MessageFragment());
                        break;
                    case 3:
                        replace(new MyFragment());
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onTabUnselected(int position) {//选中 -> 未选中

            }

            @Override
            public void onTabReselected(int position) {//选中 -> 选中

            }
        });
    }

    /**
     * 切换Fragment
     *
     * @param fragment Fragment
     */
    private void replace(Fragment fragment) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.replace(R.id.frameContent, fragment);
        transaction.commit();
    }

    /**
     * 启动Activity
     *
     * @param context 上下文
     */
    public static void startActivity(Context context) {
        Intent intent = new Intent();
        intent.setClass(context, MainActivity.class);
        context.startActivity(intent);
    }
}

2.2、activity_main布局文件

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

    <FrameLayout
        android:id="@+id/frameContent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />


    <com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:id="@+id/bottom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom" />
</LinearLayout>

 

Fragment自行定义即可,然后把文中的Fragment替换成自己的Fragment

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android中可以使用BottomNavigationBar实现底部导航栏。下面简单介绍一下实现方法。 1. 添加依赖库 在app的build.gradle中添加如下依赖: ``` implementation 'com.aurelhubert:ahbottomnavigation:2.1.0' ``` 2. 在布局文件中添加BottomNavigationBar控件 ``` <com.aurelhubert.ahbottomnavigation.AHBottomNavigation android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:ah_bottom_navigation_active_item_color="@color/colorPrimary" app:ah_bottom_navigation_inactive_item_color="@android:color/darker_gray" app:ah_bottom_navigation_background_color="@android:color/white" app:ah_bottom_navigation_title_state="always_show" app:ah_bottom_navigation_use_theme_colors="false" /> ``` 其中,ah_bottom_navigation_active_item_color表示选中的item颜色,ah_bottom_navigation_inactive_item_color表示未选中的item颜色,ah_bottom_navigation_background_color表示BottomNavigationBar的背景色。 3. 创建Fragment 在MainActivity中创建不同的Fragment用于点击不同的BottomNavigationBar item时显示不同的内容。 4. 设置BottomNavigationBar的item 在MainActivity中设置BottomNavigationBar的item,并为每个item绑定对应的Fragment。 ``` private void setupBottomNav() { AHBottomNavigationItem item1 = new AHBottomNavigationItem(R.string.tab_1, R.drawable.ic_home_black_24dp, R.color.colorPrimary); AHBottomNavigationItem item2 = new AHBottomNavigationItem(R.string.tab_2, R.drawable.ic_search_black_24dp, R.color.colorPrimary); AHBottomNavigationItem item3 = new AHBottomNavigationItem(R.string.tab_3, R.drawable.ic_settings_black_24dp, R.color.colorPrimary); bottomNavigation.addItem(item1); bottomNavigation.addItem(item2); bottomNavigation.addItem(item3); bottomNavigation.setDefaultBackgroundColor(Color.WHITE); bottomNavigation.setBehaviorTranslationEnabled(false); bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() { @Override public boolean onTabSelected(int position, boolean wasSelected) { if (!wasSelected) { switch (position) { case 0: getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment1()).commit(); break; case 1: getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment2()).commit(); break; case 2: getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment3()).commit(); break; } } return true; } }); } ``` 其中,AHBottomNavigationItem的构造函数参数分别为item的标题、图标和选中时的颜色。 5. 完成效果 运行程序即可看到底部导航栏的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值