Android kotlin实现底部导航栏

1、创建三个fragment.kt

2、创建fragmentAdapter


class MyFragmentAdapter(fragmentManager: FragmentManager, private val fragmentList: List<Fragment>, private val titleList: List<String>, private val context: Context) : FragmentPagerAdapter(fragmentManager) {



    override fun getItem(position: Int): Fragment {



        return fragmentList[position]

    }



    override fun getCount(): Int {

        return titleList.size

    }



    //注意!!!这里就是我们自定义的布局tab_item

    fun getCustomView(position: Int): View {

        val view = LayoutInflater.from(context).inflate(R.layout.tab_item, null)

        val iv = view.findViewById(R.id.tab_iv) as ImageView

        val tv = view.findViewById(R.id.tab_tv) as TextView

        when (position) {

            0 -> {

                //drawable代码在文章最后贴出

                iv.setImageDrawable(context.resources.getDrawable(R.drawable.home_icon_selector))

                tv.text = "首页"

            }

            1 -> {

                iv.setImageDrawable(context.resources.getDrawable(R.drawable.txl_icon_selector))

                tv.text = "通讯录"

            }

            2 -> {

                iv.setImageDrawable(context.resources.getDrawable(R.drawable.wd_icon_selector))

                tv.text = "我的"

            }

        }

        return view

    }

}

3、ViewPager加载fragment


private lateinit var fragment3:BlankFragment3

private lateinit var fragment2:BlankFragment2

private lateinit var fragment:BlankFragment


private fun getdata() {

    fragment  = BlankFragment()

    fragment2 = BlankFragment2()

    fragment3 = BlankFragment3()

    fragmentList!!.add(fragment)

    fragmentList!!.add(fragment2)

    fragmentList!!.add(fragment3)



    titleList!!.add("首页")

    titleList!!.add("通讯录")

    titleList!!.add("我的")



    activity_tablayout.setTabMode(TabLayout.MODE_FIXED)//不可以轮动



    activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(0)))

    activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(1)))

    activity_tablayout.addTab(activity_tablayout.newTab().setText(titleList!!.get(2)))



    activity_viewPager.adapter=MyFragmentAdapter(getSupportFragmentManager(), fragmentList!!, titleList!!,this)

    activity_tablayout.setupWithViewPager(activity_viewPager)



    for (i in 0..2) {

        val tab = activity_tablayout.getTabAt(i)

        //注意!!!这里就是添加我们自定义的布局

        tab!!.setCustomView(adapter!!.getCustomView(i))

        //这里是初始化时,默认item0被选中,setSelected(true)是为了给图片和文字设置选中效果,代码在文章最后贴出

        if (i == 0) {

            (tab!!.getCustomView()!!.findViewById(R.id.tab_iv) as ImageView).isSelected = true

            (tab!!.getCustomView()!!.findViewById(R.id.tab_tv) as TextView).isSelected = true

        }

    }


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值