位置: 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修改提示怎么设置)

  • xr支持北斗导航功能吗(苹果xr可以用北斗导航)

    xr支持北斗导航功能吗(苹果xr可以用北斗导航)

  • 微信下载不了是怎么回事(微信下载不了是怎么回事安卓)

    微信下载不了是怎么回事(微信下载不了是怎么回事安卓)

  • 苹果有没有录音录功能(苹果有没有录音功能电话)

    苹果有没有录音录功能(苹果有没有录音功能电话)

  • 荣耀30有nfc功能吗(荣耀畅玩30有nfc功能吗)

    荣耀30有nfc功能吗(荣耀畅玩30有nfc功能吗)

  • 微信发的朋友圈可以修改吗(微信发的朋友圈可以看到谁浏览过吗)

    微信发的朋友圈可以修改吗(微信发的朋友圈可以看到谁浏览过吗)

  • 阿里v任务是什么意思(阿里v任务 机构排名)

    阿里v任务是什么意思(阿里v任务 机构排名)

  • 表格在哪里制作(表格在哪里制作word)

    表格在哪里制作(表格在哪里制作word)

  • 华为p40手机截屏怎么截(华为P40手机截屏在哪找)

    华为p40手机截屏怎么截(华为P40手机截屏在哪找)

  • 预览是什么意思(微信显示预览是什么意思)

    预览是什么意思(微信显示预览是什么意思)

  • 剪映导出视频多少帧(剪映导出视频多少帧最好)

    剪映导出视频多少帧(剪映导出视频多少帧最好)

  • lpddr3内存是什么意思(lpddr是内存还是闪存)

    lpddr3内存是什么意思(lpddr是内存还是闪存)

  • ob2226sp能用什么代替(ob2226sp能用什么代换)

    ob2226sp能用什么代替(ob2226sp能用什么代换)

  • 三星s20ultra国行和韩版区别(三星s20ultra国行和港版区别)

    三星s20ultra国行和韩版区别(三星s20ultra国行和港版区别)

  • 苹果8p机身多少厘米(苹果8p机身多大)

    苹果8p机身多少厘米(苹果8p机身多大)

  • 打印机和复印机的区别(打印机和复印机是一种东西吗)

    打印机和复印机的区别(打印机和复印机是一种东西吗)

  • 恢复出厂设置相册里的照片还有吗(恢复出厂设置相册会清空吗)

    恢复出厂设置相册里的照片还有吗(恢复出厂设置相册会清空吗)

  • cdrom属于什么媒体(cdrom又称为什么)

    cdrom属于什么媒体(cdrom又称为什么)

  • 手机显示温度过低无法充电怎么办(手机显示温度过低是什么原因)

    手机显示温度过低无法充电怎么办(手机显示温度过低是什么原因)

  • 手机电池为什么会膨胀(手机电池为什么充不进去电)

    手机电池为什么会膨胀(手机电池为什么充不进去电)

  • 手机怎么隐藏qq资料(oppo手机怎么隐藏qq)

    手机怎么隐藏qq资料(oppo手机怎么隐藏qq)

  • 拼多多直接免拼能用几次(拼多多直接免拼是什么意思)

    拼多多直接免拼能用几次(拼多多直接免拼是什么意思)

  • 苹果8支持18w快充吗(苹果8支持18wpd快充吗)

    苹果8支持18w快充吗(苹果8支持18wpd快充吗)

  • 微型计算机硬件系统的性能主要取决于(微型计算机硬件系统由哪两大部分)

    微型计算机硬件系统的性能主要取决于(微型计算机硬件系统由哪两大部分)

  • 探探为什么下载不了(探探为什么刚下载就存在异常)

    探探为什么下载不了(探探为什么刚下载就存在异常)

  • 在哪里可以开个免费网店(在哪里开?)

    在哪里可以开个免费网店(在哪里开?)

  • 在win10系统中为什么任务管理器无法打开呢?(在window中)

    在win10系统中为什么任务管理器无法打开呢?(在window中)

  • Python如何利用动态属性处理JSON数据源(python 动态)

    Python如何利用动态属性处理JSON数据源(python 动态)

  • 特别关税是多少人民币
  • 什么是进项税和进项税
  • 物流公司车子
  • 销售软件怎么做账
  • 土地出让金返还的禁止性规定
  • 免税进口的自用设备再销售时该怎么征税
  • 报关单和进口增值税专用缴款书联系
  • 退货退款分录
  • 固定资产净残值率是多少
  • 以前年度做的预算怎么查
  • 不达起征点收到销售额如何作分录?
  • 支票遗失声明书范文
  • 工程款的税是怎么扣除的?
  • 退回以前年度费用怎么做帐
  • 税控盘服务费跨年还能抵吗
  • 季报资产负债表和利润表的勾稽关系
  • 增值税减免税如何处理
  • 房产契税什么时候可以退
  • 如何在excel中取最早与最晚
  • 腾讯电脑管家中蓝牙在哪
  • 销售商品包装材料怎么做
  • 房产公司财务工作内容
  • 苹果发布macOS13.6
  • 营改增前甲供材施工企业如何缴纳企业所得税
  • 其他应付款结转什么科目
  • 进货退回的会计处理
  • php中strstr
  • 终身职业技能培训
  • 被白雪覆盖的彩虹歌词
  • php匿名函数为何不匿名
  • 子公司破产对母公司是利好还是利空
  • 用python处理图像
  • 改进的拼音
  • cookie set
  • 起征点适用于
  • zip命令详解
  • 如何利用python进行文本挖掘
  • 预缴税款从哪里查
  • 增值税纳税申报表怎么填
  • dedecms怎么用
  • 帝国cms灵动标签调用标题图片
  • 审计外聘人员支付标准
  • 欠款收不回来了会计分录
  • 增值税纳税申报实训报告
  • 企业哪些情况下需要交税
  • 盘亏的设备要进仓库吗
  • 本年利润必须转入利润分配吗
  • 会计估计变更和政策变更有哪些
  • 收到费用发票没有付款的会计分录
  • 折价购买股权账务处理
  • 怎么处理固定资产残值
  • 发票优惠金额怎么开
  • 营业外支出罚没支出包括
  • 应付职工薪酬为负数什么意思
  • 包工包料成本比例
  • 企业货币资金主要包括哪些
  • 远程桌面修改默认端口
  • 登录ubuntu桌面
  • initcause
  • 如何查看文件系统
  • ubuntu怎么打开系统设置
  • windows8开机启动项在哪里设置
  • win8windows设置在哪里
  • 复制打开网页
  • win8查看系统版本
  • windows7手动更新
  • form表单中input设置为readonly和disabled的区别
  • 女鬼照片
  • jquery设置滚动条到底部
  • 深入理解ts
  • 浅谈自己对教育的理解
  • android 开发 教程
  • python最简单
  • android面试题网站
  • jquery循环生成li
  • python发送邮件的模块
  • 浅析是什么意思
  • 河南省低保信息查询
  • 重庆国税电子税务局手机版
  • 深圳房东有钱吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设