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

  • 华为mate30pro屏幕刷新率是60Hz吗(华为mate30pro屏幕厂家)

    华为mate30pro屏幕刷新率是60Hz吗(华为mate30pro屏幕厂家)

  • 小米k30电信卡用不了怎么办(小米k30电信卡用不了流量)

    小米k30电信卡用不了怎么办(小米k30电信卡用不了流量)

  • iphonex喇叭声音变小了(苹果x手机喇叭声音越来越小了怎么解决)

    iphonex喇叭声音变小了(苹果x手机喇叭声音越来越小了怎么解决)

  • 苹果手机会卡吗(苹果手机卡屏了怎么办)

    苹果手机会卡吗(苹果手机卡屏了怎么办)

  • 魅族小窗算切屏吗(魅族小窗模式可以拖动吗)

    魅族小窗算切屏吗(魅族小窗模式可以拖动吗)

  • 微信网络异常连接失败什么意思(微信网络出现异常)

    微信网络异常连接失败什么意思(微信网络出现异常)

  • 网卡坏了怎么办(无线网卡坏了怎么办)

    网卡坏了怎么办(无线网卡坏了怎么办)

  • 评论发表失败是怎么回事(发布评论失败40009)

    评论发表失败是怎么回事(发布评论失败40009)

  • 压缩zipped文件夹是什么意思(压缩zipped文件夹无效)

    压缩zipped文件夹是什么意思(压缩zipped文件夹无效)

  • ipad第三代是ipad几(ipad第三代是什么尺寸)

    ipad第三代是ipad几(ipad第三代是什么尺寸)

  • 抖音怎么发动态(抖音怎么发动态文字)

    抖音怎么发动态(抖音怎么发动态文字)

  • 优酷账号分享不合法,ip上限怎么解决(优酷账号分享不合法 ip上线什么意思)

    优酷账号分享不合法,ip上限怎么解决(优酷账号分享不合法 ip上线什么意思)

  • 苹果7P偶尔会花屏是什么原因(苹果7p偶尔会花屏正常吗)

    苹果7P偶尔会花屏是什么原因(苹果7p偶尔会花屏正常吗)

  • 苹果xs关机键没反应(iphonexs关机键没反应)

    苹果xs关机键没反应(iphonexs关机键没反应)

  • 用于测试两台计算机联通状况的命令是(要想测试两台计算机之间的报文传输路径)

    用于测试两台计算机联通状况的命令是(要想测试两台计算机之间的报文传输路径)

  • word2010默认的行距为多少(word2010默认设置)

    word2010默认的行距为多少(word2010默认设置)

  • 计算机主频用什么表示(计算机主频的概念)

    计算机主频用什么表示(计算机主频的概念)

  • 华为畅享10plus有人脸识别吗(华为畅享10plus有红外线遥控功能吗)

    华为畅享10plus有人脸识别吗(华为畅享10plus有红外线遥控功能吗)

  • 苹果x无线充电怎么开启(苹果x无线充电多少w)

    苹果x无线充电怎么开启(苹果x无线充电多少w)

  • 抖音怎么删视频作品(抖音怎么删视频评论)

    抖音怎么删视频作品(抖音怎么删视频评论)

  • 图片上传需要flash插件支持是什么意思(图片上传需要啥格式)

    图片上传需要flash插件支持是什么意思(图片上传需要啥格式)

  • col al10华为是什么型号(华为cor_al10是什么型号)

    col al10华为是什么型号(华为cor_al10是什么型号)

  • 优酷智能播放能取消嘛(优酷智能档)

    优酷智能播放能取消嘛(优酷智能档)

  • 福利费进项税额转出会计分录账务处理
  • 建筑业固定资产折旧费用科目是什么
  • 实收资本印花税是营业账簿吗
  • 什么是离岛免税如何购买有哪些特殊规定
  • 保理公司发放贷款
  • 或有资产的确认条件ACCA
  • 行政单位要考什么
  • 可转换公司债券属于哪一类金融资产
  • 外购货物用于捐赠的会计分录
  • 个税申报包含哪些
  • 汇票退回会计分录怎么写
  • 工会经费可以支付哪些费用
  • 企业间借款利息怎么算
  • 收到电子银行承兑汇票的账务处理
  • 施工机械保险费属于什么费用
  • 小规模纳税人销售已使用固定资产
  • 高新技术企业一定是先进制造业吗
  • 房产印花税缴纳
  • 房租费简易征收税率
  • 文化事业建设费征收对象
  • 对外投资公司经营范围
  • 总公司出货分公司怎么办
  • 事业单位研发支出资本化
  • 工会经费漏申报去大厅怎么处理
  • 企业合并无形资产摊销
  • 增值税防伪税控系统采用什么技术保护涉税信息
  • 汇算清缴时所得税费用
  • windows10如何开启自动更新
  • 教育预收费
  • 工资薪金怎么申报9
  • 领取养老金后每年会增加多少
  • 增值税专用发票上注明的价款含税吗
  • js添加方法
  • 深究Python中的asyncio库-shield函数
  • 投资收益的会计处理
  • dedecms主页修改
  • vue开发需要掌握哪些知识
  • python中numpy.empty()函数的用法
  • 会计学中资本的定义
  • 个体户银行开户选择哪个银行好
  • mysql@变量
  • mysql 5.5.x zip直接解压版安装方法
  • 跨年费用入账
  • 政府补助的界定
  • 高速公路过路费可以抵扣进项税吗
  • 期末留抵的税额怎么做分录
  • 装修费摊销会计准则
  • 超期应收款管控
  • 原材料结转下年怎么记
  • 外商投资企业的中国投资者
  • 金税服务费发票哪里打印
  • 破产清算的程序特点
  • 费用报销银行转账用途怎么写
  • 小微企业建账
  • sql is in
  • mysql错误代码1418
  • mac备忘录怎么使用
  • wrsvn.exe是什么
  • Win7 64位旗舰版中让SSD固态硬盘更快的优化方法
  • win7安装ubuntu20.10
  • win7自动升级失败后的处理
  • win10使用入门教程
  • win7更改ip地址后有网络无法上网
  • 电脑导航阻止怎么办
  • win10系统怎么卸载ie浏览器
  • script_tool_for_windows.bat Windows 环境下的 hosts 一键部署脚本
  • nodejs实战教程
  • android基础入门教程
  • dos批处理实例800例
  • 网络很强大
  • 车险专票怎么做账
  • 个人出租商铺个人所得税计算
  • 公司被税务查账对不上
  • 现行的企业所得税率是多少
  • 淘宝要补偿怎么回复
  • 小规模纳税人可以用专票抵扣税吗
  • 开个小型外卖店要多少钱
  • 烟台税务热线电话查询
  • 浅谈企业所得税论文
  • 个人有关事项核查情况的报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设