位置: IT常识 - 正文

Android ViewPager2 + Fragment 联动

编辑:rootadmin
Android ViewPager2 + Fragment 联动 本篇主要介绍一下 ViewPager2 + Fragment , 上篇中简单使用了ViewPager2 实现了一个图片的滑动效果, 那图片视图可以滑动, ViewPager2也可以滑动 Fragment 概述 ViewPager2 官 ... Android ViewPager2 + Fragment 联动

推荐整理分享Android ViewPager2 + Fragment 联动,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇主要介绍一下 ViewPager2 + Fragment , 上篇中简单使用了ViewPager2 实现了一个图片的滑动效果, 那图片视图可以滑动, ViewPager2也可以滑动 Fragment

概述

ViewPager2 官方对它的描述就是 以可滑动的格式显示视图或 Fragment 也就说明提供了滑动Fragment的实现 并且还很简单, 下面来看看吧

实现思路1.Activity 布局文件中引入 ViewPager2 控件2.编写 Fragment 用于填充到ViewPager2中3.编写Adapter 实现 FragmentStateAdapter

下面用实际代码 来展示 滑动Fragment

代码实现Activity 布局文件中引入 ViewPager2 控件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".ViewPage2FragmentActivity"> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager2fragment" android:layout_width="match_parent" android:layout_height="300dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:background="@color/pink" /></androidx.constraintlayout.widget.ConstraintLayout>Android ViewPager2 + Fragment 联动

编写 Fragment 用于填充到ViewPager2中package com.johnny.slzzing;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;/** * A simple {@link Fragment} subclass. * Use the {@link ViewPage2Fragment#newInstance} factory method to * create an instance of this fragment. */public class ViewPage2Fragment extends Fragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; // TODO: Rename and change types of parameters private String mParam1; private String mParam2; public ViewPage2Fragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param param1 Parameter 1. * @param param2 Parameter 2. * @return A new instance of fragment ViewPage2Fragment. */ // TODO: Rename and change types and number of parameters public static ViewPage2Fragment newInstance(String param1, String param2) { ViewPage2Fragment fragment = new ViewPage2Fragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_view_page2, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView textView = view.findViewById(R.id.fragmenttextview); textView.setText(mParam1); }}fragment_view_page2<?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" tools:context=".ViewPage2Fragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/fragmenttextview" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_blank_fragment" android:gravity="center" android:textSize="25sp" android:textColor="@color/black" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

fragment 很简单 就在中间有个TextView 区分不同的fragment

编写Adapter 实现 FragmentStateAdapterpackage com.johnny.slzzing;import android.os.Bundle;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentActivity;import androidx.viewpager2.adapter.FragmentStateAdapter;import androidx.viewpager2.widget.ViewPager2;import java.util.Arrays;import java.util.List;public class ViewPage2FragmentActivity extends AppCompatActivity { ViewPager2 viewPage2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_page2_fragment); viewPage2 = findViewById(R.id.viewpager2fragment); ViewPager2FragmentAdapter viewPager2FragmentAdapter = new ViewPager2FragmentAdapter(this , initFragmentList()); //重点 ! 把 viewPage2设置adapter 这个adapter 不是去直接继承RecycleView.Adapter了 viewPage2.setAdapter(viewPager2FragmentAdapter); } //初始化3个fragment private List<Fragment> initFragmentList() { ViewPage2Fragment viewPage2Fragment = ViewPage2Fragment.newInstance("我是Fragment1", ""); ViewPage2Fragment viewPage2Fragment2 = ViewPage2Fragment.newInstance("我是Fragment2", ""); ViewPage2Fragment viewPage2Fragment3 = ViewPage2Fragment.newInstance("我是Fragment3", ""); return Arrays.asList(viewPage2Fragment,viewPage2Fragment2,viewPage2Fragment3); } // 提供了FragmentStateAdapter 只需要继承它即可 不用继承RecycleView.Adapter static class ViewPager2FragmentAdapter extends FragmentStateAdapter{ private final List<Fragment> fragmentList; public ViewPager2FragmentAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragmentList) { super(fragmentActivity); this.fragmentList = fragmentList; } @NonNull @Override public Fragment createFragment(int position) { return fragmentList.get(position); } @Override public int getItemCount() { return fragmentList.size(); } }}效果

粉色区域是可以滑动切换 不同的Fragment 的

总结

本篇主要介绍了 ViewPager2 结合 Fragment 的基本使用方式 , 让我们可以快速的实现滑动Fragment 的功能. 后续还可以结合 BottomNavigationView 联动 底部导航栏+滑动, 有机会再说把

欢迎大家访问 个人博客 Johnny小屋欢迎关注个人公众号

本文链接地址:https://www.jiuchutong.com/zhishi/310887.html 转载请保留说明!

上一篇:深入理解python中的yield(python深入浅出)

下一篇:帝国cms修改提示框样式以及跳转时间的方法(帝国cms修改提示怎么设置)

  • 苹果11微信变成黑色怎么改回来(苹果11微信变成黑色了)

    苹果11微信变成黑色怎么改回来(苹果11微信变成黑色了)

  • 第二个微信号怎么申请(第二个微信号怎样注册)

    第二个微信号怎么申请(第二个微信号怎样注册)

  • 淘宝能隐藏订单吗(淘宝能隐藏订单吗怎么设置)

    淘宝能隐藏订单吗(淘宝能隐藏订单吗怎么设置)

  • 华为nova5发热严重怎么办(华为nova5发热严不严重)

    华为nova5发热严重怎么办(华为nova5发热严不严重)

  • vivox27摄像头怎么升(vivox27摄像头怎么清理)

    vivox27摄像头怎么升(vivox27摄像头怎么清理)

  • 小米mix2s外屏玻璃碎了(小米mix2s外屏玻璃从正面换面)

    小米mix2s外屏玻璃碎了(小米mix2s外屏玻璃从正面换面)

  • 小红书号是什么(小红书号是什么平台)

    小红书号是什么(小红书号是什么平台)

  • iphonex长度(苹果 iphone x长度)

    iphonex长度(苹果 iphone x长度)

  • 华为手机有没有语音助手功能(华为手机有没有双系统功能)

    华为手机有没有语音助手功能(华为手机有没有双系统功能)

  • 淘金币最多可以抵多少(淘金币最多可以减多少钱)

    淘金币最多可以抵多少(淘金币最多可以减多少钱)

  • 苹果8p边框能单独换吗(8p手机边框)

    苹果8p边框能单独换吗(8p手机边框)

  • 联通光猫可以自己换吗(联通光猫可以自己重置吗)

    联通光猫可以自己换吗(联通光猫可以自己重置吗)

  • excel透视表是干什么的(透视表excel透视表是什么意思)

    excel透视表是干什么的(透视表excel透视表是什么意思)

  • 和别人微信聊天记录删除了可以恢复吗(和别人微信聊天别人能看到吗)

    和别人微信聊天记录删除了可以恢复吗(和别人微信聊天别人能看到吗)

  • ps如何复制(ps如何复制一个一模一样的图形)

    ps如何复制(ps如何复制一个一模一样的图形)

  • ipad一共有几个型号(ipad一共有几款)

    ipad一共有几个型号(ipad一共有几款)

  • 京东怎么找我的评价(京东怎么找我的收货地址)

    京东怎么找我的评价(京东怎么找我的收货地址)

  • 应用宝怎么激活免流(应用宝怎么激活腾讯王卡免流量)

    应用宝怎么激活免流(应用宝怎么激活腾讯王卡免流量)

  • 见习的目的和要求

    见习的目的和要求

  • 摄像机3mp4mp5mp代表什么(摄像机3mp是什么意思)

    摄像机3mp4mp5mp代表什么(摄像机3mp是什么意思)

  • 抖音互不关注能私信吗(抖音互不关注能看到作品吗)

    抖音互不关注能私信吗(抖音互不关注能看到作品吗)

  • 实时位置共享怎么造假(实时位置共享怎么改变自己的位置)

    实时位置共享怎么造假(实时位置共享怎么改变自己的位置)

  • 手机很多应用停止运行(手机上的应用停止运行是怎么回事?)

    手机很多应用停止运行(手机上的应用停止运行是怎么回事?)

  • pdf转word软件(pdf转word软件哪个好用)

    pdf转word软件(pdf转word软件哪个好用)

  • 京东如何延长收货时间(京东怎样延长收货时间)

    京东如何延长收货时间(京东怎样延长收货时间)

  • 学会这两种方式,我们就可以免费使用chatgpt(学会这两种方式英语)

    学会这两种方式,我们就可以免费使用chatgpt(学会这两种方式英语)

  • 关税纳税申报时间
  • 公司注销员工的人身损害赔偿
  • 个人保险怎么办理
  • 施工单位的产值报告模板
  • 计提上一年度企业所得税会计分录
  • 交易性金融资产和其他权益工具投资的区别
  • 一般纳税人转让二手车增值税税率
  • 纳税人在什么情况下可以延期申报
  • 商业汇票的存款期限
  • 材料成本差异会计
  • 成本法下的后续计量
  • 开票系统服务费全额抵扣会计分录怎么做
  • 土地划拨需要缴纳增值税
  • 个体户一般纳税人和小规模的区别
  • 商品编码选错税务会直接罚款吗?
  • 增值税普票税额
  • 增值税三个过渡期科目
  • 税务会计核算范围
  • 输入开票码开具电子发票
  • 汇算清缴后如何进行调帐处理
  • 总公司给分公司钱
  • 我国个人取得的各种所得有几种类型
  • 从财务报表中可以了解企业的哪些信息?作用是什么?
  • 已抵扣的进项税额怎么转出
  • 2019年一般纳税人附加税减免政策
  • 1697510742
  • 劳务费发票已开款未收回如何做帐?
  • 1697511215
  • 升级win10到专业版
  • 购买种子怎么做账
  • 企业固定资产有哪些
  • 以公允价值计量是什么意思
  • 物资销售经营范围
  • 什么是两免一补的条件
  • 银行手续费未开发票
  • thinkphp自定义标签page
  • docker运行多个镜像
  • vscode怎么写前端代码
  • 第十四届中国大学生数学竞赛
  • 计算机视觉opencv项目简单代码
  • 个体工商户该如何开发票
  • 无实物的固定资产有哪些
  • 研发支出的主要内容
  • 申报水利基金的流程
  • 哪些是生产企业
  • 公司报销招待费需要发票还需要菜单明细吗
  • 专票红冲要不要收回发票联呢?
  • 个体工商户经营所得税税率表2023年
  • 用PostgreSQL数据库做地理位置app应用
  • 烟丝缴纳消费税计算
  • 应交增值税负数表示什么
  • 路桥费税率是几个点
  • 电子发票查询真伪
  • 广交会展务
  • 关税征收方式
  • 收购其他公司支付利润
  • 新款小汽车
  • 什么是限售股融券
  • 成本发票怎么入账
  • 港口建设费收费标准
  • 住宿费电子发票
  • windows server 2008 r2离线激活
  • iis支持什么后端语言
  • mac系统怎么创建文件
  • linux深入理解
  • windows7与xp共享文件夹
  • 无法识别的选项
  • linux系统文件压缩命令
  • linux文件latin1转换为utf
  • linux系统的服务器,重启之后运算速度变慢
  • opengl 模型
  • div滚动条怎么设置
  • 获取文件内容
  • 批处理实例
  • unityui
  • unity 120帧
  • 生产者消费者的作用
  • ukey开发票系统怎么升级?
  • 纳税申报表作废了怎么重新报?
  • 公共基础设施项目所得税优惠目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设