如何添加底部导航栏Kotlin?

我需要在移动应用程序活动中添加底部导航栏。一个实现底部导航栏的流行应用程序示例是Google提供的Google+ Android应用程序,该应用程序可用于导航至应用程序的不同目的地。您可以通过从Google Play商店下载Google+应用(如果您的设备上尚未安装)来亲自查看。以下屏幕截图来自Google+应用,其中显示了底部导航栏。

评论
  • fnam
    fnam 回复

    基本概念是这样,您拥有将托管BottomNavigationView的主要活动,并且是导航图的Navigation宿主,这是其xml的样子:

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".main.MainActivity">
    
        <fragment
            android:id="@+id/my_nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:defaultNavHost="true"
            app:layout_constraintBottom_toTopOf="@+id/navigation"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:navGraph="@navigation/nav_graph" />
    
        <android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="0dp"
            android:layout_marginEnd="0dp"
            android:background="?android:attr/windowBackground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/navigation" />
    

    BottomNavigationView的导航菜单(选项卡菜单)如下所示:

    navigation.xml

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="@string/title_home" />
    
    <item
        android:id="@+id/navigation_people"
        android:icon="@drawable/ic_group"
        android:title="@string/title_people" />
    
    <item
        android:id="@+id/navigation_organization"
        android:icon="@drawable/ic_organization"
        android:title="@string/title_organization" />
    
    <item
        android:id="@+id/navigation_business"
        android:icon="@drawable/ic_business"
        android:title="@string/title_business" />
    
    <item
        android:id="@+id/navigation_tasks"
        android:icon="@drawable/ic_dashboard"
        android:title="@string/title_tasks" />
    

    您需要添加onCreate:

    bottomNavigation.setupWithNavController(Navigation.findNavController(this, R.id.my_nav_host_fragment))
    

    这告诉android在导航架构组件和BottomNavigationView之间进行接线。在文档中查看更多。

    要获得与使用youtube时相同的行为,只需添加以下内容:

    navigation.setOnNavigationItemSelectedListener {item ->
    
                onNavDestinationSelected(item, Navigation.findNavController(this, R.id.my_nav_host_fragment))
    
            }
    

    这将使目的地进入后退堆栈,因此当您单击“后退”按钮时,将弹出最后访问的目的地。

  • 一条龙
    一条龙 回复

    How to add bottom navigation bar Kotlin? :https://www.youtube.com/watch?v=wHf-gXkdY30&t=4s