使用场景
如果想让ViewPager的tab标签和Toolbar合二为一的话,可以在Toolbar中嵌套TabLayout
使用方法
- 编写好小毛驴文件,把TabLayout嵌套到Toolbar中,编写好每一页的小毛驴布局文件,写好传递数据的类
- 编写Fragment
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class BlankFragment : Fragment() { var ctx:Context? = null var mPosition:Int = 0 var mInageId:Int = 0 var mDesc:String = "" var title:String = ""
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { ctx = activity if (arguments != null) { mPosition = arguments!!.getInt("position", 0) mInageId = arguments!!.getInt("image_id", 0) mDesc = arguments!!.getString("desc") title = arguments!!.getString("title") } val view = inflater.inflate(R.layout.item, container, false)
val pic:ImageView = view.findViewById(R.id.imageView) val desc:TextView = view.findViewById(R.id.textView)
pic.setImageResource(mInageId) desc.text = mDesc return view }
companion object { fun newInstance(position:Int, image_id:Int, desc:String, title:String) : BlankFragment { val fragment = BlankFragment() val bundle = Bundle() bundle.putInt("position", position) bundle.putInt("image_id", image_id) bundle.putString("desc", desc) bundle.putString("title", title) fragment.arguments = bundle return fragment } } }
|
- 编写ViewPager的适配器
1 2 3 4 5 6 7 8 9 10 11
| class infoPagerAdapter(val fragManger: FragmentManager, val itemList:MutableList<itemInfo>) : FragmentStatePagerAdapter(fragManger) { override fun getCount(): Int = itemList.size override fun getItem(p0: Int): Fragment { val item = itemList[p0] return BlankFragment.newInstance(p0, item.pic, item.desc, item.name) }
override fun getPageTitle(position: Int): CharSequence? { return itemList[position].name } }
|
- 给ViewPager添加适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| class the_pics : AppCompatActivity() , TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab?) {}
override fun onTabUnselected(p0: TabLayout.Tab?) {
}
override fun onTabSelected(p0: TabLayout.Tab?) { if (p0 != null) vp.currentItem = p0.position }
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_the_pics) val bar:android.support.v7.widget.Toolbar = findViewById(R.id.bar) setSupportActionBar(bar) supportActionBar?.title = "" bar.setNavigationOnClickListener { setResult(Activity.RESULT_OK) finish() }
var data:MutableList<itemInfo> = mutableListOf()
tab_title.addOnTabSelectedListener(this) vp.adapter = infoPagerAdapter(supportFragmentManager, data)
vp.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() { override fun onPageSelected(position: Int) { tab_title.getTabAt(position)!!.select() } }) } }
|