TabLayout使用以及自定义tab标签

news2024/11/17 0:06:12
<?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>
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]
        }

    }

}
  <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>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YoloV10 论文翻译(Real-Time End-to-End Object Detection)

​摘要 近年来&#xff0c;YOLO因其在计算成本与检测性能之间实现了有效平衡&#xff0c;已成为实时目标检测领域的主流范式。研究人员对YOLO的架构设计、优化目标、数据增强策略等方面进行了探索&#xff0c;并取得了显著进展。然而&#xff0c;YOLO对非极大值抑制&#xff0…

01【功能项目】之【主角射线点击导航】

首先创建一个Unity3D的项目 打开资源商店添加一个人物模型 选择一个免费资源主角添加至项目中 在unity中打开后点击下载包 点击导入包 导入成功后会出现在资源包Assets下 右键创建地面 设置地面尺寸 创建一个材料方便给地面调配颜色 选择材料的颜色 将材质拖拽给地面组为组件 将…

double类型 精度丢失的问题

前言 精度丢失的问题是在其他计算机语言中也都会出现&#xff0c;float和double类型的数据在执行二进制浮点运算的时候&#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小&#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…

QTableView使用示例-Qt模型视图代理(Model-View-Delegate)使用示例

模型视图委托&#xff08;MVD&#xff09;是Qt中特有的设计模式&#xff0c;类似MVC设计模式&#xff0c;将MVC设计模式中的Controller当做MVD中的Delegate&#xff0c;两者的概念基本相同。不同的是委托不是独立存在&#xff0c;而是包含在视图里面。 模型视图委托设计模式中&…

#71结构体案例2(三国游戏,冒泡排序)

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <string> using namespace std;//英雄结构体 struct Hero {string name;int age;string gender; };//冒泡排序 void bubbleSort(struct Hero hArray[],int len) {for(int i0;i<len-1;i){for(i…

CentOS 8 本地创建yum源

1.获取iso (有iso就可以建立本地repo) 如CentOS-8.5.2111-aarch64-dvd1.iso 2.解压iso&#xff08;mount挂载就可以吧iso解压到linux某一目录中&#xff09; mkdir /mnt/cdrom mount -o loop ./CentOS-Stream-8-aarch64-20220913-dvd1.iso /mnt/cdrom ls /mnt/cdrom 3.编…

奇偶函数的性质及运算

目录 定义 注意 特征 运算 拓展 定义 设函数f(x)的定义域D&#xff1b; 如果对于函数定义域D内的任意一个x&#xff0c;都有f(-x)&#xff0d;f&#xff08;x&#xff09;&#xff0c;那么函数f&#xff08;x&#xff09;就叫做奇函数。如果对于函数定义域D内的任意一个x…

【前端】 如何在 Vue.js 中使用 Mock 数据:教程与技巧

如何在 Vue.js 中使用 Mock 数据&#xff1a;教程与技巧 在开发过程中&#xff0c;为了测试和开发前端功能&#xff0c;你常常需要用到模拟&#xff08;mock&#xff09;数据。Vue.js 提供了灵活的方式来处理数据请求和更新&#xff0c;但在没有真实后端的情况下&#xff0c;我…

在 VueJS 中使用事件委托处理点击事件(事件委托,vue事件委托,什么是事件委托,什么是vue的事件委托)

前言 在开发 Vue 项目时&#xff0c;我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度&#xff0c;还会降低性能。事件委托是一种有效的优化方式&#xff0c;它可以显著减少事件监听器的数量&#xff0c;提高代码的可维护性和执行…

SSM禾泽校园学生商品交易平台-计算机毕设定制-附项目源码(可白嫖)50284

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对禾泽校园学生商品交易平台等问题&#xff0…

部署PXE

一 准备工作 1.rhel7主机 2.开启主机图形init 5 开图形 3.配置网络可用 4.关闭vmware dhcp功能 将VMnet8本地DHCP服务关闭 二 部署kickstart 1.安装kichstart并开启 2.安装httpd并启动 3.测试 4.配置kickstart 左上角文件保存 在vim ks.cfg中配置软件 共享 测试 四 DHCP 1.…

mysql操作(进阶)

1.数据库约束 数据库自动对数据的合法性进行校验检查的一系列机制&#xff0c;目的是为了保证数据库中能够避免被插入或者修改一些非法数据。 &#xff08;1&#xff09;mysql中提供了以下的约束&#xff1a; a.NOT NULL&#xff1a;指定某列不能为null b.UNIQUE&#xff1…

防火墙工具iptables应用详解

文章目录 前言一、Netfilter内核二、Netfilter与iptables的关系三、iptables的表与链四、iptables的常用命令与参数五、 iptables使用案例 前言 iptables是Linux系统中一款强大的防火墙工具&#xff0c;它基于Netfilter内核模块&#xff0c;允许管理员定义数据包的转发、过滤和…

RabbitMQ中如何防止消息堆积的情况发生?

RabbitMQ中如何防止消息堆积的情况发生&#xff1f; 消息堆积是消息队列系统中常见的问题&#xff0c;尤其是在高负载环境下。RabbitMQ作为一个流行的消息代理系统&#xff0c;也不可避免地会遇到这种情况。为了防止消息堆积&#xff0c;我们可以采取以下几种方法&#xff1a;…

基于node.js中国传统节日介绍网站32006-计算机毕业设计项目选题推荐(附源码)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;中国传统节日介绍网站当然也不能排除在外。中国传统节日介绍网站是以实际运用为开发背景&#xff0c;运用软件工程原理和…

Ubuntu22.04系统下,图像修复项目CodeFormer的部署——点动科技

Ubuntu22.04系统下&#xff0c;图像修复项目CodeFormer的部署——点动科技 一、前言&#xff1a;二、开始2.1 ubuntu和docker基本环境配置1.更新包列表&#xff1a;2. 安装docker依赖3. 添加docker密钥4.添加阿里云docker软件源5.安装docker6.安装完成docker测试7. docker配置国…

windows11远程桌面如何打开

随着远程办公的普及&#xff0c;选择合适的远程桌面工具变得尤为重要。在Windows 11上&#xff0c;用户可以利用系统自带的远程桌面功能&#xff0c;或选择更专业的第三方解决方案&#xff0c;如Splashtop。本文将详细介绍如何在Windows 11上启用远程桌面&#xff0c;并对比Win…

C语言——位运算

一、位运算符和位运算 C语言提供如下表所列出的位运算符&#xff1a; 说明&#xff1a; (1)位运算符中除&#xff5e;以外&#xff0c;均为二目(元)运算符&#xff0c;即要求两侧各有一个运算量。 (2)运算量只能是整型或字符型的数据&#xff0c;不能为实型数…

简单的docker学习 第4章 docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…

读零信任网络:在不可信网络中构建安全系统10认证身份

1. 用户所知道的信息 1.1. 只有用户本人知道的信息 1.2. 密码 1.2.1. 密码是常用的认证机制 1.2.2. 密码验证就是确认用户“所知”性的较好途径 1.2.3. 用户可以利用密码管理器来便捷地管理多个高强度密码&#xff0c;从而有效降低数据泄露风险 1.2.4. 长度足够长 1.2.4.1…