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

  • iPhone11pro运行内存是多大(iphone11pro运行内存到底多少)

    iPhone11pro运行内存是多大(iphone11pro运行内存到底多少)

  • 荣耀30s有没有红外线功能呢(荣耀30s有没有红外线遥控功能)

    荣耀30s有没有红外线功能呢(荣耀30s有没有红外线遥控功能)

  • 抖音设置粉丝列表不可见如何设置

    抖音设置粉丝列表不可见如何设置

  • 戴尔电脑装系统按什么(戴尔电脑装系统按f几)

    戴尔电脑装系统按什么(戴尔电脑装系统按f几)

  • 删除和撤回有什么区别(删除和撤回微信有何不同)

    删除和撤回有什么区别(删除和撤回微信有何不同)

  • 华为蓝牙自拍杆怎么连接手机(华为蓝牙自拍杆怎么连接苹果手机)

    华为蓝牙自拍杆怎么连接手机(华为蓝牙自拍杆怎么连接苹果手机)

  • 钉钉是谁的公司(钉钉是哪个公司的?)

    钉钉是谁的公司(钉钉是哪个公司的?)

  • 美团会员减配版是什么意思(美团会员优惠大吗)

    美团会员减配版是什么意思(美团会员优惠大吗)

  • 新建文档时word默认的字体和字号分别是(怎么建文档)

    新建文档时word默认的字体和字号分别是(怎么建文档)

  • mde40是啥型号(md40a)

    mde40是啥型号(md40a)

  • qq的勋章墙在哪里可以看见(qq的勋章墙在哪里找)

    qq的勋章墙在哪里可以看见(qq的勋章墙在哪里找)

  • ios9.0系统在哪下载(ios9.3.5下载)

    ios9.0系统在哪下载(ios9.3.5下载)

  • 如何删除用过的京东卡记录(如何删除用过的小程序)

    如何删除用过的京东卡记录(如何删除用过的小程序)

  • 京东笔记本激活了可以退货吗(京东笔记本激活后不支持退货是什么意思)

    京东笔记本激活了可以退货吗(京东笔记本激活后不支持退货是什么意思)

  • 手机淘宝怎么取消提醒(手机淘宝怎么取消开团提醒)

    手机淘宝怎么取消提醒(手机淘宝怎么取消开团提醒)

  • 微信星标朋友有什么用(微信星标朋友有什么用聊天有提醒吗)

    微信星标朋友有什么用(微信星标朋友有什么用聊天有提醒吗)

  • 华为快手不带美颜咋办(华为手机里的快手没有功能)

    华为快手不带美颜咋办(华为手机里的快手没有功能)

  • 苹果xsmax自带什么耳机(苹果xs max自带哪些配件)

    苹果xsmax自带什么耳机(苹果xs max自带哪些配件)

  • 为什么隔空投送失败啊(为什么隔空投送找不到我)

    为什么隔空投送失败啊(为什么隔空投送找不到我)

  • 苹果xsmax有nfc功能吗(苹果xsmax有nfc功能门禁卡)

    苹果xsmax有nfc功能吗(苹果xsmax有nfc功能门禁卡)

  • lnk文件怎么恢复word(lnk文件怎么恢复成文件夹)

    lnk文件怎么恢复word(lnk文件怎么恢复成文件夹)

  • oppoa7x有没有红外(oppoa7x有红外线吗)

    oppoa7x有没有红外(oppoa7x有红外线吗)

  • 若依框架文档开发手册----开发中常用功能模块(若依框架搭建)

    若依框架文档开发手册----开发中常用功能模块(若依框架搭建)

  • 【TypeScript】TS中type和interface在类型声明时的区别(typescript中文)

    【TypeScript】TS中type和interface在类型声明时的区别(typescript中文)

  • 公司给员工代办失业证
  • 不含税金额计算税额的计算公式
  • 进口增值税的计税价格为
  • 房屋租赁账务处理程序
  • 交通补贴算工资收入吗
  • 税控服务费减免税款分录
  • 增值税16点税降到13点,补缴税款怎么算
  • 非增值税应税项目可以抵扣进项税吗
  • 新个税法案专项扣除如何实施
  • 现金流量表关注指标
  • 行政单位往来款项长期未清理
  • 影视公司招演员
  • 缴纳印花税需要计提吗?
  • 资产负债表和利润表的利润不一致
  • 水利建设基金按什么基数计算
  • 个体定税标准
  • 股东以个人名义签订租赁合同
  • 暂估入库企业所得税税率
  • 应收账款待确认收入
  • 公司负担劳务费的个税如何做分录
  • 车辆保险抵扣会计分录
  • 什么叫非成品油发票
  • 哪里查询发票是否抵扣
  • 高技术制造企业
  • 小规模本月应交增值税次月交可以不计提吗
  • i7笔记本cpu性能天梯图
  • 在win7中,打开资源管理器的快捷键
  • 以库存现金支付车间发生的水电费200元
  • 生产成本结转库存商品的数量
  • 盈余公积的提取基数
  • win10没有音效设置
  • 公司买的手机怎么入账科目
  • window10解压
  • springboot+vue+elementsUI 实现分角色注册登录界面
  • 承兑汇票无法兑现的原因
  • 前端页面设计
  • cdr快捷键命令大全
  • 固定资产发票税率多少
  • 命名空间 php
  • 借款利息收入开票
  • 二手固定资产怎么折旧
  • 股权转让怎么查
  • 上传图片php
  • 房产租赁增值税率是5%还是9%
  • 增值税销项税的借贷方向
  • 发票已经认证后怎么撤销
  • 个体工商户生产经营所得税优惠政策
  • 建筑业有收入没有成本
  • 收不回来的应收账款会计分录
  • 培训费产生的差额是什么
  • 非税收入票据如何开具
  • 收入的利息如何计算
  • 12月费用1月报销的账务处理
  • 金税盘减免税款的会计分录
  • 会计软件包括
  • 自动清理河道垃圾船
  • windows update更新卡住不动了
  • windows许可证即将过期怎么办知乎
  • windows xp搜索功能在哪里
  • 如何备份还原电脑系统
  • macOS 10.12 Beta 7更新了什么 macOS 10.12 Beta7更新内容汇总
  • 包含正在使用的windows版本 无法格式化
  • ubuntu16.04英文版安装教程
  • win10怎么切任务管理
  • 无线和网络飞行模式
  • linux命令删除指定目录
  • python笛卡尔积
  • jquery开源
  • Node.js中的包管理工具是什么
  • shell中的括号
  • 在centos上安装pycharm
  • javascript面向对象 第三方类库
  • The method findViewById(int) is undefined for the type FragmentHome报错
  • javascript教程
  • jquery 触发点击
  • 计税核定价是什么
  • 差额征税差额开票怎么理解
  • 房屋设备租赁费
  • 税务局查帐怎么查
  • 李民基
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设