TabLayout利用以及自定义tab标签

打印 上一主题 下一主题

主题 1052|帖子 1052|积分 3156

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent">
  7.     <com.google.android.material.tabs.TabLayout
  8.         android:id="@+id/tab"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="wrap_content"
  11.         app:layout_constraintStart_toStartOf="parent"
  12.         app:layout_constraintTop_toTopOf="parent"
  13.         app:tabTextAppearance="@style/myTab"
  14.         style="@style/myTabLayout"
  15.         tools:ignore="SpeakableTextPresentCheck" />
  16.     <androidx.viewpager2.widget.ViewPager2
  17.         android:id="@+id/vp"
  18.         android:layout_width="match_parent"
  19.         android:layout_height="wrap_content"
  20.         app:layout_constraintStart_toStartOf="parent"
  21.         app:layout_constraintTop_toBottomOf="@+id/tab" />
  22. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
  1. package com.example.myapplication
  2. import android.os.Bundle
  3. import android.view.View
  4. import android.widget.TextView
  5. import androidx.appcompat.app.AppCompatActivity
  6. import androidx.fragment.app.Fragment
  7. import androidx.fragment.app.FragmentManager
  8. import androidx.lifecycle.Lifecycle
  9. import androidx.recyclerview.widget.RecyclerView
  10. import androidx.viewpager2.adapter.FragmentStateAdapter
  11. import com.example.myapplication.databinding.TestVp2Binding
  12. import com.google.android.material.tabs.TabLayoutMediator
  13. class VP2Demo : AppCompatActivity() {
  14.     override fun onCreate(savedInstanceState: Bundle?) {
  15.         super.onCreate(savedInstanceState)
  16.         val inflate = TestVp2Binding.inflate(layoutInflater)
  17.         setContentView(inflate.root)
  18.         val mutableListOf = mutableListOf<Fragment>()
  19.         val fragment = Fragment(R.layout.test_a)
  20.         val fragment2 = Fragment(R.layout.test_view)
  21.         val fragment3 = Fragment(R.layout.test_net)
  22.         val childAt = inflate.vp.getChildAt(0)
  23.         (childAt as? RecyclerView)?.setOverScrollMode(View.OVER_SCROLL_NEVER)
  24.         mutableListOf.add(fragment)
  25.         mutableListOf.add(fragment2)
  26.         mutableListOf.add(fragment3)
  27.         inflate.vp.adapter = MyVpAdapter(mutableListOf, supportFragmentManager, lifecycle)
  28.         val titles = mutableListOf<String>()
  29.         titles.add("新闻")
  30.         titles.add("新闻2")
  31.         titles.add("新闻3")
  32.         TabLayoutMediator(
  33.             inflate.tab, inflate.vp
  34.         ) { p0, index ->
  35.             run {
  36.                 p0.setText(titles[index])
  37.                 p0.setIcon(R.drawable.zc)
  38.                 if(index==1){
  39.                     val textView = TextView(baseContext)
  40.                     textView.text = "我是自定义的标签哈哈~~~"
  41.                     p0.setCustomView(textView)
  42.                 }
  43.             }
  44.         }.attach()
  45.     }
  46.     class MyVpAdapter(list: MutableList<Fragment>, fm: FragmentManager, lf: Lifecycle) :
  47.         FragmentStateAdapter(fm, lf) {
  48.         private var listS = emptyList<Fragment>()
  49.         init {
  50.             listS = list
  51.         }
  52.         override fun getItemCount(): Int {
  53.             return listS.size
  54.         }
  55.         override fun createFragment(position: Int): Fragment {
  56.             return listS[position]
  57.         }
  58.     }
  59. }
复制代码
  1.   <style name="myTab" parent="@android:style/TextAppearance.Widget.TabWidget">
  2.         <item name="textAllCaps">false</item>
  3.         <item name="android:textSize">30sp</item>
  4.     </style>
  5.     <style name="myTabLayout" parent="Widget.Design.TabLayout">
  6.         <item name="tabIndicatorColor">#00FF00</item>
  7.         <item name="tabSelectedTextColor">#FF0000</item>
  8.         <item name="tabTextColor">#0000FF</item>
  9.         <item name="tabRippleColor">@color/yellow</item>
  10.     </style>
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表