顶部标题TabLayout点击切换Fragment

顶部标题TabLayout点击切换Fragment

加依赖:

在开始之前先调用工具插件:右键工程》Open Module Settings》Dependencies》+》Library Dependency》导人(com.android.support:design:27.0.2)》ok
implementation ‘com.android.support:design:27.0.2‘
===================================================

布局:

<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
    <android.support.design.widget.TabLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/tabLayout"/>
    <android.support.v4.view.ViewPager
android:layout_height="0dp"
android:layout_width="fill_parent"
android:id="@+id/viewPager"
android:layout_weight="1"/>
</LinearLayout>
==============================================
主要方法:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.shenhuiran.R;
import java.util.ArrayList;
public class Main2Fragment extends Fragment {
    private TabLayout tabLayout;
    private ViewPager viewPager;
    ArrayList<Fragment> fragmentList;  //放所有的fragment
ArrayList<String> titleList ;// tablayout的标题
private View view;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = View.inflate(getActivity(), R.layout.fragment_2, null);
        tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
        viewPager = (ViewPager) view.findViewById(R.id.viewPager);
        Log.e("test", "---------------------onCreateView");
        return view;
    }
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initData();
        Log.e("test", "---------------------test log");
        viewPager.setAdapter(new MAdapter(getFragmentManager()));
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        //让viewpager和顶部标题关联
tabLayout.setupWithViewPager(viewPager);
    }
    private void initData() {
        fragmentList = new ArrayList<Fragment>();
        titleList = new ArrayList<String>();
        if (fragmentList.size()==0){
            fragmentList.add(new Fragment1());
            fragmentList.add(new Fragment2());
            fragmentList.add(new Fragment3());
        }
        if (titleList.size()==0){
            titleList.add("Fragment1");
            titleList.add("Fragment2");
            titleList.add("Fragment3");
        }
    }
    private class MAdapter extends FragmentPagerAdapter {
        public MAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int position) {
            return fragmentList.get(position);
        }
        @Override
        public int getCount() {
            return fragmentList.size();
        }
        //一定要重写这个返回标题的方法;
@Override
        public CharSequence getPageTitle(int position) {
            return titleList.get(position);
        }
    }
}
=======================================

Fragment1 方法:

importandroid.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.shenhuiran.R;
public class Fragment1 extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.f1, null);
        return view;
    }
}

原文地址:https://www.cnblogs.com/shenhuiran/p/8267572.html

时间: 2024-10-21 05:26:40

顶部标题TabLayout点击切换Fragment的相关文章

使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换

效果图如下 首先,要使用控件需要添加design library,在Android Studio中添加 compile 'com.android.support:design:23.4.0' 然后是布局文件 <?xml version="1.0" encoding="utf-8"?>   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 https://blog.csdn.net/qq_35820350/article/details/82460376 在网上学习了一下,这两篇文章写的不错. 来看一下效果 共有4各部分 1.自定义顶部栏 2.侧滑菜单 3.弹出菜单 4.标签滑动切换 进入具体实现环节啦 第一 .自定义顶部栏 1.先

Android之fragment点击切换和滑动切换结合

学了一小段时间的Android,主要接触的是UI设计,打交道最多莫过于fragment了吧.在Android3.0引入了fragment的概念后,几乎在所以的Android的应用中都可以看见其身影,已经有很多前辈高人都已经详细介绍过fragmrnt,我这里就不多说什么了. 这里本来是想模仿一下微信的切换效果,怎奈水平不足,这里就献丑贴出半成品的代码,希望有大神能指点一下.废话不多说,上代码.先从简单的开始吧,这里是我一共用了3个fragment,这里就只贴出第一个的fragment的布局,别的两

仿美团外卖,饿了吗 两个ListView联动,左边点击切换右边,右边滑动切换左边

先上效果图: 实现思路: 1.先说右边标题: 首先,右边的数据源集合中的Javabean中含有三个属性name,type,title,而每个条目中会默认含有一个标题. 如果这是第一个条目,就让标题显示出来,再如果这个条目的类型和上一个条目的类型不一样,就让这个条目的标题显示出来,否则,就隐藏标题,  这样我们就做到了每种类型只有第一个数据标题显示出来 接着,在Listview的外层(也就是MainActivity的布局文件中),默认放一个标题(下面都称作是主标题) 最后,设置右边Listview

切换Fragment时实现数据保持

摘要 Fragment设计初衷是为了简化不同屏幕分辨率的开发难度,他将代表一个功能的UI及其相关数据看做一个模块,以便达到复用.可以将Fragment看作是一个可以嵌入布局中的activity,有自己的生命周期. Fragment设计初衷是为了简化不同屏幕分辨率的开发难度,他将代表一个功能的UI及其相关数据看做一个模块,以便达到复用.可以将Fragment看作是一个可以嵌入布局中的activity,有自己的生命周期.比如我现在在手机上有activityA和activityB,但是在平板上有更大的

底边栏Tab切换Fragment,带角标显示效果

类似于手机版qq的底边栏Tab效果有很多种实现方法,比如TabActivity.自定义RadioGroup等.由于高版本下TabActivity已经被废弃,而且Activity比较重量级,所以一般不使用TabActivity.这里分享一种我写的自定义底部Tab的方法,顺带加上底部标签的角标显示效果.效果如下: 关于Demo需要交代几点: 1.这个Demo中并没有对尺寸做适配,在不同机型的手机上运行需要调整代码中的尺寸相关代码. 2.角标效果只是个演示效果,逻辑可能并不合理,具体显示或者改变.隐藏

动态添加RadioButton并切换Fragment

公司项目中有这样一个需求,当从网络获取json数据并解析后,动态的添加按钮,点击时切换对应按钮下存储的各种数据. 如下图: 这里只是单单为了动态添加RadioButton而已,所以数据直接用Fragment替换,效果如下: MainActivity: package com.ut.radiobuttondynamicadd; import android.os.Bundle; import android.support.v4.app.Fragment; import android.suppo

jquery中常见的标题内容之间的切换

昨天在做后台组的一个小功能的时候遇到的,很基础,但是也很常用,记下来大家一起学习. 比如,需要的是这样子的一个功能,如下图: 最上面一行的的标题和侧面的标题都是可以互相切换的.这个效果很常见,在浏览网页的时候. 首先我们先说下标题之间的切换,完了之后再说标题和内容一起切换.. 我给最上面那排的每一个标题统一的类名是top,然后将点击过后呈现的样式写在了.hover里面. 用jquery操作: $('.top').click(function(){ $('.top').removeClass('h

Activity内切换fragment实现底部菜单切换遇到的坑

1.一般说来,app底部导航都会设计为5个菜单,可以使用textView,也可使用radioButton,这里我选择用radioButton,给radioButton直接设置selector就可以实现背景变换. 2.接下来说说,fragment切换的实现方式.大家都知道切换fragment有两种方式: ① replace直接替换: fragmentManager.beginTransaction().replace(R.id.ll_container, fg_home).addToBackSta