赞
踩
编写的页面效果如下,可以左右滑动以及进行点击,页面布局由Fragment编写
implementation com.google.android.material:material:1.0.0
implementation androidx.viewpager2:viewpager2:1.0.0
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:id="@+id/make_money_drawable" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/make_money_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="visible"> <com.google.android.material.tabs.TabLayout android:id="@+id/make_money_content_tab" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" app:tabIndicatorHeight="0dp"/> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/make_money_content_vp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/dd_dp10"/> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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">
<TextView
android:id="@+id/make_money_tab_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:text="选项卡一"/>
</FrameLayout>
这里只编写一个作为示例
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="布局内容"/>
</FrameLayout>
package com.wd.daquan.explore.activity import android.view.View import android.widget.TextView import androidx.core.view.GravityCompat import androidx.fragment.app.Fragment import androidx.recyclerview.widget.GridLayoutManager import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayout import com.wd.daquan.R import kotlinx.android.synthetic.main.activity_make_money.* import com.wd.daquan.explore.adapter.MakeMoneyPagerAdapter /** * 赚钱页面 */ class MakeMoneyActivity: FragmentAdtivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_make_money) initView() } fun initView() { initViewViewPager() initTabAndPagerListener(make_money_content_tab,make_money_content_vp) initTab(arrayListOf("综合","最新","佣金","我的"),make_money_content_tab) } private fun initViewViewPager(){ val fragmentList = arrayListOf<Fragment>() fragmentList.add(MakeMoneyTaskFragment()) fragmentList.add(MakeMoneyTaskFragment()) fragmentList.add(MakeMoneyTaskFragment()) fragmentList.add(MakeMoneyTaskFragment()) val pagerAdapter = MakeMoneyPagerAdapter(this) pagerAdapter.fragments = fragmentList make_money_content_vp.adapter = pagerAdapter } /** * 初始化Tab选项卡 */ private fun initTab(nameList :List<String>, tabLayout: TabLayout){ nameList.forEach { val view = layoutInflater.inflate(R.layout.item_make_money_task_tab,tabLayout,false) val tabName = view.findViewById<TextView>(R.id.make_money_tab_tv) tabName.text = it val tab = tabLayout.newTab() tab.customView = view tabLayout.addTab(tab) } tabLayout.getTabAt(0)?.select() } //另外一种写法 // private var mediator: TabLayoutMediator? = null // private fun initTabLayout(){ // mediator = TabLayoutMediator(binding.tlTable, binding.vpContent) { tab, position -> // tab.text = getString(titlesRes[position]) // } // mediator?.attach() // } private fun initTabAndPagerListener(tabLayout: TabLayout, viewPager2: ViewPager2){ tabLayout.addOnTabSelectedListener(object :TabLayout.OnTabSelectedListener{ override fun onTabReselected(tab: TabLayout.Tab?) {//再次选中 } override fun onTabUnselected(tab: TabLayout.Tab?) {//没选中 val view = tab!!.customView val titleTv = view!!.findViewById<TextView>(R.id.make_money_tab_tv) titleTv.setTextColor(resources.getColor(R.color.color_666666)) } override fun onTabSelected(tab: TabLayout.Tab?) {//选中 val index = tab!!.position val view = tab.customView val titleTv = view!!.findViewById<TextView>(R.id.make_money_tab_tv) titleTv.setTextColor(resources.getColor(R.color.color_F39825)) viewPager2.setCurrentItem(index, true) } }) viewPager2.registerOnPageChangeCallback(object :ViewPager2.OnPageChangeCallback(){ override fun onPageSelected(position: Int) { super.onPageSelected(position) //选择的位置 tabLayout.getTabAt(position)?.select() if(3 == position){ make_money_title.setRightTxt("管理") }else{ make_money_title.setRightTxt("筛选") } } }) } override fun onDestroy() { super.onDestroy() //mediator?.detach() } }
/** * ViewPager适配器 */ class MakeMoneyPagerAdapter : FragmentStateAdapter { var fragments :MutableList<Fragment> = arrayListOf() constructor(fragmentActivity :FragmentActivity):super(fragmentActivity) constructor(fragment :Fragment):super(fragment) constructor(@NonNull fragmentManager : FragmentManager, lifecycle : Lifecycle):super(fragmentManager,lifecycle) override fun getItemCount() = fragments.size override fun createFragment(position: Int) = fragments[position] // override fun getItemId(position: Int): Long = fragments.itemId(position) // override fun containsItem(itemId: Long): Boolean = fragments.contains(itemId) // } }
package com.wd.daquan.explore.fragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.fragment_make_money_task.* /** * 赚钱中的任务分页 */ class MakeMoneyTaskFragment :Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_make_money_task,container,false) } }
viewpager2的使用方式:https://github.com/android/views-widgets-samples/tree/master/ViewPager2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。