300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android--TabLayout+ViewPager+Fragment实现切页展示

Android--TabLayout+ViewPager+Fragment实现切页展示

时间:2022-09-27 15:47:31

相关推荐

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="/apk/res/android"xmlns:tools="/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 /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地址:/chaoyu168/pageChangeDemo

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。