您当前的位置: 首页 > 

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

底部导航栏BottomNavigationView+Fragment

蓝不蓝编程 发布时间:2020-11-25 17:27:19 ,浏览量:0

效果图

主要代码
  1. 添加依赖
implementation 'com.google.android.material:material:1.2.1'
  1. 布局文件:activity_main.xml



    

    

  1. 颜色选择器:bottom_navigation_item_selector.xml



    
    

  1. 菜单:main_bottom_navigation

    
    

PS: 如果要使用不同的图片对应选中/非选中状态,则需要创建selector,然后修改 android:icon属性为对应的selector.seletor样例:


    
    

  1. activity及fragment代码
class MainActivity : AppCompatActivity() {
    private var lastIndex = 0
    private var mFragments = mutableListOf()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initBottomNavigation()
        initData()
    }

    private fun initData() {
        mFragments = ArrayList()
        mFragments.add(HomeFragment())
        mFragments.add(MineFragment())
        // 初始化展示MessageFragment
        setFragmentPosition(0)
    }

    private fun initBottomNavigation() {
        bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener { item ->
            when (item.itemId) {
                R.id.menu_message -> setFragmentPosition(0)
                R.id.menu_contacts -> setFragmentPosition(1)
                else -> {
                }
            }
            true
        })
    }

    private fun setFragmentPosition(position: Int) {
        val ft = supportFragmentManager.beginTransaction()
        val currentFragment = mFragments[position]
        val lastFragment = mFragments[lastIndex]
        lastIndex = position
        ft.hide(lastFragment)
        if (!currentFragment.isAdded) {
            supportFragmentManager.beginTransaction().remove(currentFragment).commit()
            ft.add(R.id.ll_frameLayout, currentFragment)
        }
        ft.show(currentFragment)
        ft.commitAllowingStateLoss()
    }
}
class HomeFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_home, container, false)
    }
}
class MineFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_mine, container, false)
    }
}
完整源代码

https://gitee.com/cxyzy1/sample-bottom-navigation-bar

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0846s