您的位置:

Android NavigationBar完全指南 - 手把手教你快速实现页面导航

一、什么是NavigationBar

NavigationBar是Android系统提供的一个视图组件,主要用于界面操作的导航,包括添加按钮、标题栏等。在Android中,NavigationBar通常出现在底部,用于导航、操作和栏目分类。

在实现NavigationBar的过程中,我们需要用到Android提供的Toolbar、TabLayout、ViewPager等组件,来实现多个页面之间的切换和导航,同时也需要进行一定的适配工作,以保证NavigationBar适用于不同的Android版本系统。

二、如何实现NavigationBar

1、首先,我们需要在项目的build.gradle中引入最新的Material Design库,以便使用Design Support Library提供的Toolbar、TabLayout和NavigationView等组件。


    dependencies {
        compile 'com.android.support:design:28.0.0'
    }

2、接下来,我们需要在布局文件中添加Toolbar,作为NavigationBar的容器。


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

3、接着,我们需要在Activity中,设置Toolbar并将其作为ActionBar使用,以便可以在Toolbar中添加按钮、菜单等。


    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

4、接下来,我们需要添加TabLayout和ViewPager组件,以实现多个页面之间的切换和导航,同时也需要自定义TabLayout中Tab的样式等。


    TabLayout tabLayout = findViewById(R.id.tab_layout);
    ViewPager viewPager = findViewById(R.id.view_pager);
    ViewPagerAdapter viewPagerAdapter =
            new ViewPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(viewPagerAdapter);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.getTabAt(0).setIcon(R.drawable.ic_home_tab);
    tabLayout.getTabAt(1).setIcon(R.drawable.ic_search_tab);
    tabLayout.getTabAt(2).setIcon(R.drawable.ic_profile_tab);

至此,我们已经实现了NavigationBar的基本功能,可以进行多个页面之间的切换和导航了。

三、NavigationBar的适配问题

在实现NavigationBar时,我们还需要进行一定的适配工作,以确保NavigationBar在不同的Android版本上都可以正常使用。

1、Android 4.4及以下版本:在这些版本中,我们需要使用Toolbar替代ActionBar,同时需要进行适当的样式设置。


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Light"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:theme="@style/ToolbarStyle">
        
        <TextView
            android:id="@+id/text_view_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:textColor="@color/white"
            android:textSize="18sp"
            android:textStyle="bold"/>
            
    </android.support.v7.widget.Toolbar>

2、Android 5.0及以上版本:在这些版本中,我们可以使用原生的Toolbar并设置为ActionBar使用即可。


    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

3、在Android 5.0及以上版本中,我们还可以使用Toolbar的新属性,如elevation和contentInsetStart,来改善NavigationBar的视觉效果。


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Light"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:contentInsetStart="0dp"
        app:elevation="0dp">
        
        <TextView
            android:id="@+id/text_view_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:textColor="@color/white"
            android:textSize="18sp"
            android:textStyle="bold"/>
            
    </android.support.v7.widget.Toolbar>

四、完整示例代码


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
        
    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        app:tabIndicatorColor="@color/white">
        
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:icon="@drawable/ic_home_tab"/>
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:icon="@drawable/ic_search_tab"/>
        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:icon="@drawable/ic_profile_tab"/>
            
    </android.support.design.widget.TabLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
    </android.support.v4.view.ViewPager>
Android NavigationBar完全指南 - 手把

2023-05-14
Android手机导航栏示范

2023-05-14
Android Q中的全新手势导航

2023-05-14
Android全屏Dialog详解

2023-05-18
印象笔记记录java学习(Java成长笔记)

2022-11-12
Android Studio底部导航栏的完美实现

在Android应用程序开发中,底部导航栏是一种常用的UI设计元素,用于在不同的页面之间进行快速导航。在Android Studio中,我们可以很方便地使用底部导航栏来实现这一功能。本文将介绍Andr

2023-12-08
h5网站野马导航js代码,h5网站野马导航js代码大全

本文目录一览: 1、微信H5的页面代码要怎么写 2、怎样在HTML中禁止一段代码,让一段内容不显示。 3、html里,点击左侧菜单,右侧出现文本或者图片,用js怎么写 4、androd H5混合开发

2023-12-08
如何使用Android开发快速入门指南

2023-05-14
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
php新手笔记,php初学者

2022-11-19
python手机软件大全,python的手机软件

2022-11-22
mac Android Studio 快捷键使用指南

2023-05-21
Android自定义View实现导航栏

导航栏是Android应用的一个重要组成部分,它可以帮助用户快速切换应用内的页面,提高用户体验。在实际开发中,我们经常会遇到导航栏的定制需求,而自定义View就成了一个很好的选择。本文将介绍如何使用自

2023-12-08
Android登录页面设计指南

2023-05-14
懒人必备:一篇教你快速Android热更新的实现

众所周知,Android发布新版本后,需要用户手动下载新版本并进行安装。如果更新的内容比较多,这个过程可能会很麻烦,甚至让一些用户选择放弃更新。但是,在一些紧急情况下,我们又必须更新app。怎么办呢?

2023-12-08
Android Auto:让你的驾驶变得更智能

2023-05-14
Android Pie:更新系统和增强用户体验的新方式

Android Pie(Android 9)是谷歌近年来为Android平台推出的一次重大版本更新。它开创了一些全新的更新方式,不仅增强了设备的安全性和性能,也进一步改善和简化了用户体验。接下来我们将

2023-12-08
提升用户体验的应用支持库:Android Jetpack

2023-05-14
Android菜鸟开发入门指南

2023-05-20
让你的手机体验更优秀的Android杀手

一、系统优化 1、清理系统垃圾 在系统使用过程中,会产生各种缓存文件、日志文件等垃圾文件,这些文件会占用手机存储空间,影响系统运行速度。因此,我们需要定期清理系统垃圾,可以使用以下代码进行实现。 im

2023-12-08