Kotlin学习笔记——ViewPager

1
#define 小毛驴 xml

使用方法

  1. 在活动页面添加ViewPager,如果需要tab标签,在ViewPager里嵌套PagerTabStrip或PagerTitleStrip
  2. 设计传送数据的类(一张图和一个标题就足够)
  3. 编写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
    class ImagePagerAdapter(val context: Context, val itemList:MutableList<itemInfo>) : PagerAdapter() {
    val views = mutableListOf<ImageView>()
    init {
    for (item in itemList) {
    val view = ImageView(context)
    //view.layoutParams = ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT)
    view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)

    view.setImageResource(item.pic)
    view.scaleType = ImageView.ScaleType.FIT_CENTER
    views.add(view)
    }
    }
    override fun isViewFromObject(p0: View, p1: Any): Boolean = (p0 === p1)

    override fun getCount(): Int = views.size

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
    container.removeView(views[position])
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {
    container.addView(views[position])
    return views[position]
    }

    override fun getPageTitle(position: Int): CharSequence? {
    return itemList[position].desc
    }//与PagerTabStrip或配合使用

    }
  4. 给PagerView添加适配器和页面改变的Listener
    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
    class MainActivity : AppCompatActivity(), ViewPager.OnPageChangeListener {
    override fun onPageScrollStateChanged(p0: Int) {
    }

    override fun onPageScrolled(p0: Int, p1: Float, p2: Int) {

    }


    override fun onPageSelected(p0: Int) {
    Toast.makeText(this, p0.toString(), Toast.LENGTH_SHORT).show()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //supportActionBar?.hide()
    var vp:ViewPager = findViewById(R.id.vp)
    val pics = arrayOf(R.mipmap.basic, R.mipmap.close, R.mipmap.debug, R.mipmap.edit)
    val list:MutableList<itemInfo> = mutableListOf()
    for (i in pics.indices) {
    list.add(itemInfo((i+1).toString(), pics[i]))
    }
    vp.adapter = ImagePagerAdapter(this, list)
    vp.currentItem = 0
    vp.addOnPageChangeListener(this)

    var title: PagerTabStrip = findViewById(R.id.title)

    title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f)
    title.setTextColor(Color.RED)
    }
    }
作者

Meow Meow Liu

发布于

2019-04-12

更新于

2025-04-15

许可协议

评论