kotlin tablayout+viewpager+fragment

import android.os.Bundle
import android.support.design.widget.TabLayout
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import android.support.v7.app.AppCompatActivity
import android.view.LayoutInflater
import android.view.View
import com.trace.reportsystem.R
import com.trace.reportsystem.fragment.*
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.layout_main_icon.view.*

class MainActivity : AppCompatActivity() {

    private var homePagerFragment: BaseFragment = HomePagerFragment()
    private var transactionFragment: BaseFragment = TransactionFragment()
    private var taskFragment: BaseFragment = TaskFragment()
    private var mineFragment: BaseFragment = MineFragment()

    private var list: List<BaseFragment> = listOf(homePagerFragment,
            transactionFragment, taskFragment, mineFragment)

    var titles = listOf("首頁", "工作", "項目", "我的")

    //選中時候的icon
    var select = listOf(R.mipmap.tabbar_activity_h,
            R.mipmap.tabbar_find_h, R.mipmap.tabbar_reserve_h,
            R.mipmap.tabbar_scene_h)

    //未選中時候的icon
    var unselect = listOf(R.mipmap.tabbar_activity_n,
            R.mipmap.tabbar_find_n, R.mipmap.tabbar_reserve_n,
            R.mipmap.tabbar_scene_n)


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)

        main_vp.adapter = MyViewPagerAdapter(supportFragmentManager, list)

        setCustomIcon()

        main_tl.addOnTabSelectedListener(object : TabLayout.ViewPagerOnTabSelectedListener(main_vp) {
            override fun onTabSelected(tab: TabLayout.Tab?) {
                super.onTabSelected(tab)

                var position: Int = tab!!.position
                uploadView(tab.customView!!, titles[position], select[position],
                        resources.getColor(R.color.colorAccent))

            }

            override fun onTabUnselected(tab: TabLayout.Tab?) {
                super.onTabUnselected(tab)

                var position: Int = tab!!.position
                uploadView(tab.customView!!, titles[position], unselect[position],
                        resources.getColor(R.color.colorPrimary))
            }

        })
    }

    private fun setCustomIcon() {
        for (i in 0 until titles.size) {
            main_tl.addTab(main_tl.newTab().setCustomView(makeTabView(titles[i],
                    if (i == 1) select[i] else unselect[i],
                    if (i == 1) resources.getColor(R.color.colorAccent)
                    else resources.getColor(R.color.colorPrimary))),
                    i == 1)

        }

    }

    private fun makeTabView(title: String, imgId: Int, colorId: Int): View? {
        val tabView = LayoutInflater.from(this).inflate(R.layout.layout_main_icon, null)
        uploadView(tabView, title, imgId, colorId)
        return tabView
    }


    private fun uploadView(tabView: View, title: String, imgId: Int, colorId: Int) {
        tabView.textview?.text = title
        tabView.textview?.setTextColor(colorId)
        tabView.imageview?.setImageResource(imgId)
    }

    class MyViewPagerAdapter(fm: FragmentManager?, var list: List<BaseFragment>) : FragmentPagerAdapter(fm) {
        override fun getItem(p: Int): Fragment {
            return list[p]
        }

        override fun getCount(): Int {
            return list.size
        }

    }

}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.MainActivity">

    <com.trace.reportsystem.layout.NoScrollViewPager
        android:id="@+id/main_vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toTopOf="@+id/main_tl" />

    <android.support.design.widget.TabLayout
        android:id="@+id/main_tl"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:tabIndicatorHeight="0dp"
        app:tabRippleColor="@color/translate"
        app:tabSelectedTextColor="@color/blue" />


</android.support.constraint.ConstraintLayout>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章