Fragment+Viewpage2+FragmentStateAdapter实现滑动式标签布局

大家好,我是网创有方,今天记录下标签布局的实现方法,先看下效果图。

第一步:编写一个activity或者fragment。内含有一个viewpager2的适配器,适配器类型为FragmentStateAdapter。

​
public class MediaCreateFragment extends Fragment {private FragmentMediaCreateBinding binding;private TabLayout tabLayout;private ViewPager2 viewPager2;private List<TabMediaFragment> tabMediaFragmentList ;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {// Inflate the layout for this fragmentbinding = FragmentMediaCreateBinding.inflate(inflater,container,false);View root = binding.getRoot();initView();Log.e("tag","onCreateView中");return root;}private void initView(){}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);tabLayout = binding.tabMediaCreate;viewPager2 = binding.viewPager2Tab;// 初始化Fragment列表和标题tabMediaFragmentList =new ArrayList<>();tabMediaFragmentList.add(TabMediaFragment.newInstance("小红书的内容"));tabMediaFragmentList.add(TabMediaFragment.newInstance("百家号的内容"));tabMediaFragmentList.add(TabMediaFragment.newInstance("今日头条的内容"));List<String> titleList = new ArrayList<>();titleList.add("小红书");titleList.add("百家号");titleList.add("今日头条");// 获取FragmentManager和Lifecycle实例Lifecycle lifecycle = getLifecycle();// 创建并设置适配器MyFragmentStateAdapter adapter = new MyFragmentStateAdapter(getActivity(), tabMediaFragmentList, titleList);// 设置适配器到ViewPager2viewPager2.setAdapter(adapter);// 设置TabLayout与ViewPager2的关联new TabLayoutMediator(tabLayout, viewPager2,(tab, position) -> tab.setText(adapter.getPageTitle(position)) // 设置标签标题).attach();}public class MyFragmentStateAdapter extends FragmentStateAdapter {private  List<TabMediaFragment> tabMediaFragmentList;private  List<String> titles;public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity, List<TabMediaFragment> tabMediaFragmentList, List<String> titles) {super(fragmentActivity);this.tabMediaFragmentList = tabMediaFragmentList;this.titles = titles;}@NonNull@Overridepublic Fragment createFragment(int position) {return tabMediaFragmentList.get(position);}@Overridepublic int getItemCount() {return  tabMediaFragmentList.size();}public String getPageTitle(int position) {return titles.get(position);}}
}​

需要包含标签的list和fragment的list

第二步:编写盛载标签页面的容器framelayout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/frame_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#000">
<TextViewandroid:id="@+id/tx_show_content"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="测试"android:textSize="25sp"android:textColor="#000"/></FrameLayout>

第三步:编写activity或者fragment的布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_media_create"android:layout_width="match_parent"android:layout_height="wrap_content"app:tabGravity="fill"app:tabMode="scrollable"app:tabIndicatorColor="@color/design_default_color_secondary"app:tabIndicatorFullWidth="true"app:tabSelectedTextColor="@color/design_default_color_primary"app:tabTextColor="@color/purple_200"></com.google.android.material.tabs.TabLayout><androidx.viewpager2.widget.ViewPager2android:id="@+id/viewPager2_tab"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/></LinearLayout>

包含一个tablayout和viewpager2控件。

好了这篇文章到这里就结束了。喜欢的点个关注,收藏。

 网创有方论坛:https://wcyf520.cn,一个专注于网络创业知识分享的论坛。

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

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

相关文章

VideoView视频组件

简介 VideoView 在Android中是一个用户界面组件&#xff0c;它允许开发者在Android设备的屏幕上播放视频文件。它是Android SDK的一部分&#xff0c;位于android.widget包中。VideoView提供了一种简单的方法来嵌入和控制视频播放&#xff0c;包括设置视频源、开始、暂停、 seek…

CV每日论文--2024.6.27

1、Text-Animator: Controllable Visual Text Video Generation 中文标题&#xff1a;Text-Animator&#xff1a;可控视觉文本视频生成 简介&#xff1a;视频生成是各行业中具有重要价值但同时也极具挑战性的任务,例如在游戏、电子商务和广告领域。在文本到视频(T2V)生成中,一…

前端Bug 修复手册

1.前端长整数精度丢失问题 &#xff08;1&#xff09;问题 在前后端联调时&#xff0c;发现后端有一个接口返回的值和前端页面上展示的值不一致。 后端Java实现的接口如下&#xff0c;返回一个json格式的大整数 123456789123456789&#xff1a; 但是前端请求这个接口后&…

Spring每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别&#xff1f;Spring Boot的优点Spring IoC是什么&#xff1f;说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值&#xff1f;Spring Boot自动装配原理Spring MVC工作原…

Charles抓包工具系列文章(三)-- 接口映射工具(Map Remote和Map Local)

一、背景 前文的http请求都是静态的&#xff0c;像compose a new request&#xff0c;仅适用于接口的自测。 回放repeat 一个 http 请求&#xff0c;也无法做到动态调试。 这里的动态还是静态&#xff0c;是站在客户端的角度&#xff0c;数据是实时的&#xff0c;可调试的。 …

提升入住率|智慧酒店解决方案,打造有温度的居住体验!

近年来&#xff0c;智慧酒店被越来越多的人关注&#xff0c;由生物识别、物联网技术和互联网技术融合产生的智慧酒店解决方案&#xff0c;不仅可以提升顾客在酒店的入住体验&#xff0c;还可以帮助酒店降低运营成本&#xff0c;这也让越来越的酒店选择了智慧酒店的赛道&#xf…

深入解析Linux的使用(下)

深入解析Linux的使用&#xff08;下&#xff09; 在上一篇文章中&#xff0c;我们介绍了Linux的基础知识&#xff0c;包括基本命令、文件系统和权限管理。本文将继续探讨软件安装和系统管理等高级操作。 4. 软件安装 4.1 使用包管理器 不同的Linux发行版使用不同的包管理器…

有哪些常见的网络带宽和延迟问题

网络带宽和延迟问题是影响网络性能和用户体验的重要因素。以下是一些常见的网络带宽和延迟问题&#xff0c;结合参考文章中的相关数字和信息进行归纳和说明&#xff1a; 一、网络带宽问题 带宽不足 问题描述&#xff1a;当网络连接的带宽不足以满足当前的网络流量需求时&…

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;概述 &#x1f348;目标检测的主要流程通常包括以下几个步骤 &#x1f34d;数据采集 &#x1f34d;数据预处理 &#x1f34d;特征提取 &#x1f34d;目标定位 &#x1f34d;目标分类 &#x1f348;…

Oracle PL / SQL约束

约束是表及其列的规则&#xff0c;用于约束可以插入&#xff0c;更新或删除的数据的方式和数据。 约束对列和表都可用。 列约束 列可以具有定义可以将什么值列表输入到其中的规则。 NOT NULL约束意味着列必须具有值。 它不能为未知&#xff0c;或为空。 下表使用DDL创建具…

文件夹读取难题:详解原因与数据恢复策略

一、文件夹读取不到文件的现象描述 在日常的计算机使用中&#xff0c;有时我们会遇到文件夹读取不到文件的情况。这通常表现为在尝试打开某个文件夹时&#xff0c;其中的文件列表并未正常显示&#xff0c;或者文件虽然显示但无法访问。这种问题不仅影响用户的工作效率&#xf…

Spark SQL----用于格式化和解析的数字Pattern

Spark SQL----用于格式化和解析的数字Pattern 一、描述二、语法三、Elements四、函数类型和错误处理五、例子5.1 to_number函数5.2 try_to_number 函数5.3 to_char函数 一、描述 诸如to_number和to_char之类的函数支持在字符串和Decimal类型的值之间进行转换。这些函数接受指示…

通俗易懂的chatgpg的原理简介

目录 一、深度学习与语言模型 二、ChatGPT训练三步走 三、情景学习与思维链 四、修改提示语优化结果 五、能力评估和注意问题 六.算法原理 简介&#xff1a; ChatGPT的人工智能原理主要基于深度学习技术&#xff0c;特别是大规模的预训练语言模型和Transformer结构。Cha…

【redis】redis事务

1、基本概念 Redis事务是一组命令的集合&#xff0c;这组命令要么全部执行&#xff0c;要么全部不执行&#xff0c;以保证数据的一致性。传统数据库中的事务相比&#xff0c;Redis事务有其独特之处&#xff0c;尤其是它不支持事务回滚。 2、特性 原子性&#xff1a;事务中的所…

马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3

在今年内&#xff0c;由特斯拉创始人马斯克创立的人工智能初创公司xAI将推出两款重要产品Grok-2和Grok-3。马斯克在社交平台上透露了这一消息&#xff0c;其中Grok-2预计在今年8月份面世&#xff0c;而Grok-3则计划于年底前亮相。 除此之外&#xff0c;马斯克还表示&#xff0c…

spring-05

什么是 Spring 的依赖注入 Spring 的依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种设计模式&#xff0c;用于管理和组织对象之间的依赖关系。在传统的程序设计中&#xff0c;对象通常会通过直接创建其他对象的实例来解决依赖关系&#xff0c…

EI期刊投稿要多久

EI检索的文章&#xff0c;无论是期刊还是会议论文&#xff0c;从投稿到发表的时间长度不一&#xff0c;受到多种因素的影响&#xff0c;包括期刊的审稿速度、会议的安排、以及EI的检索周期。 对于EI期刊文章&#xff0c;整个过程通常需要5到8个月&#xff0c;有时甚至更长。这包…

Java中如何优雅地处理TimeoutException异常?

Java中如何优雅地处理TimeoutException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;TimeoutException异常是一个…

[信号与系统]IIR滤波器与FIR滤波器相位延迟定量的分析。

IIR滤波器与FIR滤波器最大的不同&#xff1a;相位延迟 IIR滤波器相位延迟分析 相位响应和延迟 这里讨论一下理想延迟系统的相位延迟。 对于一个给定的系统频率响应 H ( e j w ) H(e^{jw}) H(ejw)可以表示为 H ( e j w ) ∣ H ( e j w ) ∣ e Φ ( w ) H(e^{jw}) |H(e^{jw…

【面试系列】SQL 高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…