Android--TabLayout+ViewPager+Fragment实现切页展示
一、TabLayout+ViewPager+Fragment方法的思路:
- 创建存储多个Fragment实例的列表
- 创建PagerAdapter实例并关联到Viewpager中
- 将ViewPager关联到Tablayout中
- 根据需求改写Tablayout属性
二、使用方法
1、引入
//TabLayout+ViewPagerimplementation 'com.android.support:design:28.0.0'implementation 'com.android.support:support-v4:28.0.0'
2、布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:orientation="vertical"tools:context=".MainActivity"><android.support.design.widget.TabLayoutandroid:id="@+id/tabLayout_tabs"android:layout_width="match_parent"android:layout_height="40dp" /><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager_content"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>
3、fragment
package com.example.pagechangedemo;import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;/*** Created by Administrator on 2019/4/23* <p>* desc:*/
public class oneFragment extends BaseFragment {/*** 标志位,标志已经初始化完成*/private boolean isPrepared;/*** 是否已被加载过一次,第二次就不再去请求数据了*/private boolean mHasLoadedOnce;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {if (mView == null) {// 需要inflate一个布局文件 填充FragmentmView = inflater.inflate(R.layout.fragment_one, container, false);initView();isPrepared = true;
// 实现懒加载lazyLoad();}//缓存的mView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个mView已经有parent的错误。ViewGroup parent = (ViewGroup) mView.getParent();if (parent != null) {parent.removeView(mView);}return mView;}/*** 初始化控件*/private void initView() {Bundle bundle = getArguments();String args = bundle.getString("agrs1");}@Overridepublic void lazyLoad() {if (!isPrepared || !isVisible || mHasLoadedOnce) {return;}//填充各控件的数据mHasLoadedOnce = true;}public static oneFragment newInstance(String param1) {oneFragment fragment = new oneFragment();Bundle args = new Bundle();args.putString("agrs1", param1);fragment.setArguments(args);return fragment;}
}
完整demo地址:https://github.com/chaoyu168/pageChangeDemo
Android--TabLayout+ViewPager+Fragment实现切页展示相关推荐
- TabLayout+ViewPager+Fragment实现切页展示
写在前面 目前大多数的APP都采用的是几个Tab标签以及多个界面滑动的形式来提供多层次的交互体验,最为常用的做法就是采用TabLayout+ViewPager+Fragment的方式,最近在公司项目中 ...
- 使用TabLayout+ViewPager+Fragment实现切页展示
使用TabLayout+ViewPager+Fragment是比较常见的实现切页展示的方式,本例是在fragment中实现主要代码 步骤: 1,定义TabLayout和ViewPager的布局 2,实 ...
- Android实现一个简易的新闻列表APP(TabLayout+ViewPager+Fragment)
Android实现一个简易的新闻列表APP(TabLayout+ViewPager+Fragment) 文章目录 Android实现一个简易的新闻列表APP(TabLayout+ViewPager+F ...
- TabLayout+Viewpager+Fragment实现分页滚动
效果如上,顶部标签滚动底下的页面也跟着滚动 灰色的标签只是一个recyclerview装起来的 这里用TabLayout+Viewpager+Fragment实现 先看布局 <?xml vers ...
- android左右滑动fragment,Android基于ViewPager+Fragment实现左右滑屏效果的方法
本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法.分享给大家供大家参考,具体如下: 1.xml布局模板 android:id="@+id/local ...
- TabLayout+ViewPager+Fragment(内部:TabLayout+ViewPager+ Fragment)需要注意!!
之前面试的时候,被面试官问道ViewPager嵌套ViewPager怎么处理的.我还一直在回答用最外层的vp的onInterceptTouchEvent来处理怎样怎样(注意是代码没有写过,就这样说了. ...
- 小牛的安卓笔记-----底部导航栏的实现以及用TabLayout+ViewPager+Fragment实现页面滑动切换
昨夜西风凋碧树,独上高楼,望尽天涯路. 今天难得有时间,准备写一写我们在APP中经常用到的页面形式,废话不多说,直接一张图看看页面效果你就知道为啥是常用的页面形式.先看看逻辑和最后的效果是怎么样的: ...
- TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题
场景 TabLayout+ViewPager+Fragment的使用过程中需要判断Fragment是否对用户可见,监听Fragment由不可见变为可见的事件 解决方案 重写Fragment的setUs ...
- Tablayout+ViewPager+Fragment 实现页面切换
项目也快上线了,就来总结下Tablayout+ViewPager+Fragment 的使用啦 主activity public class DoSomethingAct extends BaseAct ...
最新文章
- nginx 重写 隐藏index.php
- tortoisesvn › prefer local prefer repository
- 信息系统项目管理案例3
- REST WebServices学习
- 后端:Java 8 中的 Map 实用操作,学习下!
- 1-4 无监督学习(Unsupervised Learning)
- linux uart中断程序,linux 串口中断实现
- python--正则表达式 字符串匹配
- 十年维护专家的“秘籍
- Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
- idea 编译时提示找不到符号
- mysql ocp考试大纲_MySQL OCP考试大纲
- Setup Factory打包winform程序
- selenium 网址
- 数据库原理及应用-李唯唯主编-实验3-4
- 征信篇: 如何保护个人隐私,防止征信受损?
- Failed to load the JNI shared library 的解决方法
- 今日头条能干掉微信么? | 畅言
- 初识DTW(动态时间规整)算法及Python实现例
- 对于感情的一点小感悟