在本文中,使用Kotlin在Android中添加了ExpandableBottomBar 。它替代了BottomNavigationView 。 BottomNavigationView使用户轻松单击即可浏览和在顶级视图之间切换。当应用程序具有三到五个顶级目标时,应使用它们。 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:按照上述步骤操作CourseFragment和LoginFragment 。
步骤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