您当前的位置: 首页 > 

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

TabLayout+ViewPager实现横向tab导航栏

蓝不蓝编程 发布时间:2020-01-16 18:06:54 ,浏览量:0

效果

实现方案
  • activity
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        initViewPager()
        initTabLayout()
    }

    private fun initViewPager() {
        addViews()
        viewPager.addOnPageChangeListener(TabLayoutOnPageChangeListener(tabLayout))
        setAdapter()
    }

    private fun addViews() {
        val view1 = LayoutInflater.from(this).inflate(R.layout.view_pager_1, null)
        val view2 = LayoutInflater.from(this).inflate(R.layout.view_pager_2, null)

        viewPager.addView(view1)
        viewPager.addView(view2)
    }

    private fun setAdapter() {
        viewPager.adapter = object : PagerAdapter() {
            override fun getCount(): Int {
                return viewPager.childCount
            }

            override fun isViewFromObject(view: View, obj: Any): Boolean {
                return view === obj
            }

            override fun instantiateItem(container: ViewGroup, position: Int): Any {
                return viewPager.getChildAt(position)
            }
        }
    }

    private fun initTabLayout() {
        tabLayout.addOnTabSelectedListener(object : BaseOnTabSelectedListener {

            override fun onTabSelected(tab: TabLayout.Tab?) {
                val position = tab!!.position
                viewPager.currentItem = position
            }

            override fun onTabReselected(p0: TabLayout.Tab?) {
            }

            override fun onTabUnselected(p0: TabLayout.Tab?) {
            }
        })
    }
}
  • 布局文件 activity_main.xml



    

        

        


    

    


view_pager_1.xml




    

view_pager_2.xml




    

完整源代码

https://gitee.com/cxyzy1/tablayoutDemo

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

微信扫码登录

0.0415s