📜  Android中的ExpandableBottomBar

📅  最后修改于: 2021-05-13 13:53:30             🧑  作者: Mango

在本文中,使用Kotlin在Android中添加了ExpandableBottomBar 。它替代了BottomNavigationView BottomNavigationView使用户轻松单击即可浏览和在顶级视图之间切换。当应用程序具有三到五个顶级目标时,应使用它们。 ExpandableBottomBar也具有不同的选项,但是在单击时会展开。因此,它可以容纳更多选项,并为用户提供更好的体验。假设开发人员想要创建一个音乐播放器应用程序并在该应用程序中添加专辑,歌曲,歌手和播放列表选项。在这种情况下可以使用它。

Android中的ExpandableBottomBar

好处:

  • 可以从应用程序中的任何位置访问的顶级目的地。
  • 它是Material Design Component(BottomNavigationView)的扩展。
  • 易于使用。

缺点:

  • 仅在只有三个到五个目的地时使用。
  • 只能与手机和平板电脑一起使用。
  • 文字标签的长度应短一些。
  • 当用户在同一窗口中的应用中花费超过90%的时间时,应使用该功能。

方法:

步骤1:build.gradle文件中添加支持库,并在“依赖项”部分中添加依赖项。它允许开发人员直接在XML文件中直接使用ExpandableBottomBar。

XML
dependencies {         
        implementation 'com.github.st235:expandablebottombar:1.1.8'     
}


XML

    Algorithm
    Course
    Profile


fragment_algorithm.xml


  
    
  


fragment_course.xml


  
    
  


fragment_profile.xml


  
    
  


activity_main.xml


  
    
  
    
  


MainActivity.kt
package org.geeksforgeeks.expandablebottombar
  
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import github.com.st235.lib_expandablebottomba
                            .ExpandableBottomBar
import github.com.st235.lib_expandablebottombar
                            .ExpandableBottomBarMenuItem
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val bottomBar: ExpandableBottomBar = 
                       findViewById(R.id.expandable_bottom_bar)
  
        //set up the base fragment
        supportFragmentManager.beginTransaction()
                              .add(R.id.layout, AlgorithmFragment())
                              .commit()
  
        //addItem function is used to set items in ExpandableBottomBar
        bottomBar.addItems(
            ExpandableBottomBarMenuItem.Builder(context = this)
                .addItem(R.id.fragment_algo, R.drawable.ic_algorithm,
                         R.string.algo, Color.GREEN)
                .addItem(R.id.fragment_course, R.drawable.ic_course,
                         R.string.course, Color.YELLOW)
                .addItem(R.id.fragment_profile, R.drawable.ic_account,
                         R.string.profile, Color.MAGENTA)
                .build()
        )
  
        //It will help the user to switch between different fragment.
        bottomBar.onItemSelectedListener = { view, menuItem ->
            when(menuItem.itemId){
                R.id.fragment_algo ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, AlgorithmFragment())
                        .commit()
                R.id.fragment_course ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, CourseFragment())
                        .commit()
                R.id.fragment_profile ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, ProfileFragment())
                        .commit()
            }
        }
  
  
    }
}


步骤2:现在,在字符串.xml文件中添加以下代码。在此文件中,添加将在ExpandableBottomBar中显示的字段的所有名称。

XML格式


    Algorithm
    Course
    Profile

步骤3:通过右键单击Java包创建一个AlgorithmFragment ,选择new- > Fragment(Blank)。

步骤4:按照上述步骤操作CourseFragmentLoginFragment

步骤5:现在,在fragment_algorithm.xml文件中添加以下代码。这里在布局中添加了一个TextView。

fragment_algorithm.xml



  
    
  

步骤6:现在将以下代码添加到fragment_course.xml文件中。这里在布局中添加了一个TextView。

fragment_course.xml



  
    
  

步骤7:现在,在fragment_profile.xml文件中添加以下代码。这里在布局中添加了一个TextView。

fragment_profile.xml



  
    
  

步骤8:现在将以下代码添加到activity_main.xml文件中。在此文件中,将ExpandableBottomBar添加到我们的布局中。

activity_main.xml



  
    
  
    
  

步骤9:现在在MainActivity.kt文件中添加以下代码。在此文件中,添加有助于在片段之间导航的onItemSelectedListener 。当用户点击图标时,它将切换片段。在这里, addItem方法用于显式添加项目到ExpandableBottomBar,但是也可以通过在菜单文件夹中添加项目来完成。

MainActivity.kt

package org.geeksforgeeks.expandablebottombar
  
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import github.com.st235.lib_expandablebottomba
                            .ExpandableBottomBar
import github.com.st235.lib_expandablebottombar
                            .ExpandableBottomBarMenuItem
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val bottomBar: ExpandableBottomBar = 
                       findViewById(R.id.expandable_bottom_bar)
  
        //set up the base fragment
        supportFragmentManager.beginTransaction()
                              .add(R.id.layout, AlgorithmFragment())
                              .commit()
  
        //addItem function is used to set items in ExpandableBottomBar
        bottomBar.addItems(
            ExpandableBottomBarMenuItem.Builder(context = this)
                .addItem(R.id.fragment_algo, R.drawable.ic_algorithm,
                         R.string.algo, Color.GREEN)
                .addItem(R.id.fragment_course, R.drawable.ic_course,
                         R.string.course, Color.YELLOW)
                .addItem(R.id.fragment_profile, R.drawable.ic_account,
                         R.string.profile, Color.MAGENTA)
                .build()
        )
  
        //It will help the user to switch between different fragment.
        bottomBar.onItemSelectedListener = { view, menuItem ->
            when(menuItem.itemId){
                R.id.fragment_algo ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, AlgorithmFragment())
                        .commit()
                R.id.fragment_course ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, CourseFragment())
                        .commit()
                R.id.fragment_profile ->
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.layout, ProfileFragment())
                        .commit()
            }
        }
  
  
    }
}

输出:

参考链接:https://github.com/st235/ExpandableBottomBar

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!