实现效果:
- 主界面xml(包含viewPager和BottomNavigationView)
- 底部菜单:bottom_navigation_main.xml
- MainActivity
class MainActivity : AppCompatActivity() {
private val favoritesTabIndex = 0
private val schedulesTabIndex = 1
private val mineTabIndex = 2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragments = getFragments()
vp.adapter = object : FragmentStateAdapter(this) {
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
override fun getItemCount(): Int {
return fragments.size
}
}
//禁用左右滑动切换页签
vp.isUserInputEnabled = false
bottomNavigationView.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.action_favorites -> {
vp.setCurrentItem(favoritesTabIndex, false)
}
R.id.action_schedules -> {
vp.setCurrentItem(schedulesTabIndex, false)
}
R.id.action_music -> {
vp.setCurrentItem(mineTabIndex, false)
}
}
true
}
}
private fun getFragments(): ArrayList {
val fragments = ArrayList(3)
val favoritesFragment = BaseFragment()
var bundle = Bundle()
bundle.putString("title", getString(R.string.favorites))
favoritesFragment.arguments = bundle
val schedulesFragment = BaseFragment()
bundle = Bundle()
bundle.putString("title", getString(R.string.schedules))
schedulesFragment.arguments = bundle
val mineFragment = BaseFragment()
bundle = Bundle()
bundle.putString("title", getString(R.string.mine))
mineFragment.arguments = bundle
fragments.add(favoritesFragment)
fragments.add(schedulesFragment)
fragments.add(mineFragment)
return fragments
}
}
源代码:
https://github.com/cxyzy1/bottomNavigationViewSample.git