TabLayout使用以及自定义tab标签

kotlin 复制代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">


    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:tabTextAppearance="@style/myTab"

        style="@style/myTabLayout"
        tools:ignore="SpeakableTextPresentCheck" />

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/vp"

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toBottomOf="@+id/tab" />


</androidx.constraintlayout.widget.ConstraintLayout>
kotlin 复制代码
package com.example.myapplication


import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.example.myapplication.databinding.TestVp2Binding
import com.google.android.material.tabs.TabLayoutMediator


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


        val inflate = TestVp2Binding.inflate(layoutInflater)
        setContentView(inflate.root)


        val mutableListOf = mutableListOf<Fragment>()
        val fragment = Fragment(R.layout.test_a)

        val fragment2 = Fragment(R.layout.test_view)


        val fragment3 = Fragment(R.layout.test_net)


        val childAt = inflate.vp.getChildAt(0)
        (childAt as? RecyclerView)?.setOverScrollMode(View.OVER_SCROLL_NEVER)
        mutableListOf.add(fragment)
        mutableListOf.add(fragment2)
        mutableListOf.add(fragment3)

        inflate.vp.adapter = MyVpAdapter(mutableListOf, supportFragmentManager, lifecycle)
        val titles = mutableListOf<String>()
        titles.add("新闻")
        titles.add("新闻2")
        titles.add("新闻3")



        TabLayoutMediator(
            inflate.tab, inflate.vp
        ) { p0, index ->
            run {
                p0.setText(titles[index])
                p0.setIcon(R.drawable.zc)
                if(index==1){
                    val textView = TextView(baseContext)
                    textView.text = "我是自定义的标签哈哈~~~"
                    p0.setCustomView(textView)
                }

            }
        }.attach()




    }


    class MyVpAdapter(list: MutableList<Fragment>, fm: FragmentManager, lf: Lifecycle) :
        FragmentStateAdapter(fm, lf) {

        private var listS = emptyList<Fragment>()

        init {
            listS = list

        }

        override fun getItemCount(): Int {
            return listS.size
        }

        override fun createFragment(position: Int): Fragment {

            return listS[position]
        }

    }

}
kotlin 复制代码
  <style name="myTab" parent="@android:style/TextAppearance.Widget.TabWidget">
        <item name="textAllCaps">false</item>
        <item name="android:textSize">30sp</item>



    </style>
    <style name="myTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabIndicatorColor">#00FF00</item>
        <item name="tabSelectedTextColor">#FF0000</item>

        <item name="tabTextColor">#0000FF</item>
        <item name="tabRippleColor">@color/yellow</item>

    </style>
相关推荐
姜行运1 小时前
数据结构【二叉搜索树(BST)】
android·数据结构·c++·c#
JhonKI9 小时前
【MySQL】存储引擎 - CSV详解
android·数据库·mysql
开开心心_Every9 小时前
手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复
android·windows·python·搜索引擎·智能手机·pdf·音视频
大G哥10 小时前
Kotlin Lambda语法错误修复
android·java·开发语言·kotlin
鸿蒙布道师13 小时前
鸿蒙NEXT开发动画案例2
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
androidwork13 小时前
Kotlin Android工程Mock数据方法总结
android·开发语言·kotlin
xiangxiongfly91515 小时前
Android setContentView()源码分析
android·setcontentview
悠哉清闲16 小时前
kotlin一个函数返回多个值
kotlin
人间有清欢17 小时前
Android开发补充内容
android·okhttp·rxjava·retrofit·hilt·jetpack compose
人间有清欢17 小时前
Android开发报错解决
android