TabLayout ViewPager fragment 联动_tablayout fragment绑定后如何联动 java android-程序员宅基地

技术标签: fragment  viewpager  tablayout  

首先先看效果图:


具体实现:

首先导入依赖包:

compile 'com.android.support:design:27.+'

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:orientation="vertical"
    tools:context="com.lsc.yumo.demo_1.MainActivity">

    <android.support.design.widget.TabLayout
        android:id="@+id/main_tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:tabBackground="@drawable/sp_bg"
        app:tabIndicatorHeight="0dp"
        app:tabSelectedTextColor="#02d"
        app:tabTextColor="#ccc">

    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/main_vp_content"
        android:isScrollContainer="false"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/main_tabLayout">
    </android.support.v4.view.ViewPager>
</RelativeLayout>

其中Tablayout标签中的属性

        app:tabBackground="@drawable/sp_bg"//每一个item的背景
        app:tabIndicatorHeight="0dp"//下滑线设置为0 即隐藏下划线
        app:tabSelectedTextColor="#02d"//选中状态的item的字体颜色
        app:tabTextColor="#ccc"//默认状态下的item的字体颜色

java代码的实现:

public class MainActivity extends AppCompatActivity{

TabLayout mainTabLayout;
ViewPager mainViewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mainViewPager = findViewById(R.id.main_vp_content);
        mainTabLayout = findViewById(R.id.main_tabLayout);
        initViewPager();
    }
    public void initViewPager(){
        mainViewPager.setAdapter(new VpAdapter(getSupportFragmentManager()));
        //注释掉的代码可以实现滑动 但是不能实现点击的自动跳转的效果
//        mainViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
//            @Override
//            public void onPageSelected(int position) {
//                mainTabLayout.getTabAt(position).select();
//            }
//        });
        //Tablayout 与 viewPager 进行绑定
        mainTabLayout.setupWithViewPager(mainViewPager);
        //由于绑定后 标签的标题和图片都会消失 所以在绑定玩完成后需要对标签进行赋值
        //设置title
        mainTabLayout.getTabAt(0).setText("商品");
        mainTabLayout.getTabAt(1).setText("分类");
        mainTabLayout.getTabAt(2).setText("购物");
        mainTabLayout.getTabAt(3).setText("我的");
        //设置图片 由于图片的选中和未选中状态不一致 所以需要为每张图片在drawable目录下新建一个xml文件
        //用于区分选中和默认的显示状态 然后把xml文件赋值给每一个item
        mainTabLayout.getTabAt(0).setIcon(R.drawable.goods);
        mainTabLayout.getTabAt(1).setIcon(R.drawable.classification);
        mainTabLayout.getTabAt(2).setIcon(R.drawable.shopping_cart);
        mainTabLayout.getTabAt(3).setIcon(R.drawable.mine);
    }
}


ViewPager的适配器VpAdapter

public class VpAdapter extends FragmentPagerAdapter {

    public VpAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0){
            return new GoodsFragment();
        }else if (position == 1){
            return  new ClassificationFragment();
        }else if (position == 2){
            return  new ShoppingCartFragment();
        }else if (position == 3){
            return  new MineFragment();
        }

        return new GoodsFragment();
    }

    @Override
    public int getCount() {
        return 4;
    }
}
示例中fragment的代码很简单 在实际项目中按需求填写即可.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42190712/article/details/80584332

智能推荐

python函数拟合不规则曲线_python 对于任意数据和曲线进行拟合并求出函数表达式的三种方案。...-程序员宅基地

文章浏览阅读988次。原博文2020-07-17 19:33 −本文链接:https://blog.csdn.net/changdejie/article/details/83089933第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式。具体示例如下。###拟合年龄import numpy as npimport matplotl...相关推荐2019-12-15 10:09 −axios本身没有..._不规则曲线拟合

图解 CMMI 2.0之(四)能力等级和成熟度等级_cmmi2.0 每个级别-程序员宅基地

文章浏览阅读7.7k次,点赞3次,收藏16次。过程改进模型的不同表示法出于不同的应用目的,过程改进模型通常会采用阶段式或连续式这二种不同的表示方法,模型类型分别对应为阶段型模型或连续型模型。例如,CTP、STEP是连续型模型,TMMi 是阶段型模型,而CMMI既有阶段式的表示方法,也有连续式的表示方法,所以CMMI既是阶段型模型,也是连续型模型。不同表示法的模型具有不同的应用目的。连续式表示法强调的是单个域(如过程域、..._cmmi2.0 每个级别

CentOS离线安装最新版本Docker_centos离线安装docker 18.09.6-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏32次。一、背景由于公司内部服务器只能连内网,即使建立局域网yum源,也无法使用yum在线安装Docker CE。支持在线安装的朋友们,直接参考CentOS在线安装Docker官方文档即可:https://docs.docker.com/install/linux/docker-ce/centos/目前最新版本是v18.09.6。二、准备工作1、根据官方文档对CentOS的要求:需要是..._centos离线安装docker 18.09.6

关于pycharm上opencv的安装和cv2 ‘cv2.’无代码提示问题的解决_pycharm用terminal下载opencv-程序员宅基地

文章浏览阅读1.9k次,点赞6次,收藏10次。一.pycharm下opencv的安装在pycharm下的Terminal输入pip install opencv-python也可以下载功能加强版pip install opencv-contrib-python添加了国内pip源的朋友们记得在命令行后面加上(以下是清华pip源)-i https://pypi.tuna.tsinghua.edu.cn/simple..._pycharm用terminal下载opencv

linux内核编译过程中出现两个错误的解决方法~!-程序员宅基地

文章浏览阅读639次。  /*************************** error 1 ******************************/ 在编译内核的过程中出现了如下的编译显示代码:   drivers/video/console/vgacon.c: In function 'vgacon_startup':   drivers/video/console/vgacon.c:510..._编译内核 efi_secure_boot undeclared 错误

SqlServer事务1.0_php 原生sqlserver事务-程序员宅基地

文章浏览阅读156次。事务事务的定义事务的使用场景事务的特性事务的语法实例讲解事务的定义事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组,如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。为了确保要么执行,要么不执行,就可以使用事务。要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。事务的使用场景举个例子,我们经常会使用转账功能,转账的时候,是先减去转出自己账户的金额,然后再在指定转入账户的金额加上转出的金额。如果刚好这个时候转出的操作已经执行完成_php 原生sqlserver事务

随便推点

QScrollArea垂直滚动条 水平滚动条隐藏_qtscrollarea取消滚动条-程序员宅基地

文章浏览阅读3.4k次,点赞3次,收藏9次。enum ScrollBarPolicy { ScrollBarAsNeeded, //需要的时候显示 ScrollBarAlwaysOff,//总是关闭 ScrollBarAlwaysOn//总是打开 };QScrollArea *scroll=new QScrollArea;scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);..._qtscrollarea取消滚动条

【matlab深度学习工具箱】convolution2dLayer参数详解-程序员宅基地

文章浏览阅读9.7k次,点赞10次,收藏80次。2-D 卷积层2-D 卷积层将滑动卷积滤波器应用于 2-D 输入。该层通过沿输入方向垂直和水平移动滤波器并计算权重和输入的点积,然后添加偏置项来卷积输入。描述 创建一个 2-D 卷积层,并设置 和 属性。名称-值对参数使用逗号分隔的名称-值对参数指定要沿图层输入边缘添加的填充的大小,或设置 参数和初始化、学习速率和正则化以及属性。将名称括在单引号中。示例:创建了一个2-D卷积层,其中包含16个大小的过滤器和的填充。在训练时,软件计算并设置填充的大小,以便图层输出具有与输入相同的大小。输入边填充,指定_convolution2dlayer

双目测距、重构(基于MATLAB和opencv-python)_matlab 基于双目视觉进行三维重构-程序员宅基地

文章浏览阅读3k次。双目测距、重构楼主之前用的SFM来进行重构,但是得到的是视差图,点云和实物存在比例关系,单目的还是不能解决scale这个问题的。所以今天用双目的来进行重构,期间遇到了很多坑,实属难受。双目测距过程大致可以分为,标定,图像校正,计算视差,测距,知道这个流程,目标就很明确了标定opencv和matlab都有标定的代码,但是老师说还是matlab的标定更加准确,自己试验下来也的确感受到matla..._matlab 基于双目视觉进行三维重构

倒残差与线性瓶颈浅析 - MobileNetV2_倒残差结构-程序员宅基地

文章浏览阅读1.4w次,点赞18次,收藏112次。文章目录1 背景简介2 MobileNetV2 要点2.1 Inverted Residuals(倒残差结构)2.2 Linear Bottlenecks(线性瓶颈结构)3 代码实现 - pytorch1 背景简介  在提出 MobileNetV1 后,谷歌团队又于次年(2018 年)提出 MobileNetV2 网络。相较于 MobileNetV1, MobileNetV2 准确率更高,模型更小。关于 MobileNetV1 可参考本人先前博客(深度可分离卷积解析 - MobileNetV1),此处给_倒残差结构

移植opencv+opencv_contrib_apps/annotation/cmakefiles/opencv_annotation.dir/b-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏8次。交叉编译opencv 3.4.2opencv_contribute 3.4.2ubuntu 16cmake 3.12.2cmake 进行编译配置勾选 ENABLE_CXX11设置安装路径 CMAKE_INSTALL_PREFIX /usr/local问题一:opencv-3.4.1/3rdparty/libpng/pngstruct.h:30:18: fatal error: zlib.h: No such file or directory~/op..._apps/annotation/cmakefiles/opencv_annotation.dir/build.make:99: recipe for t

图像分割最全综述_图像分割最优问题综述-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏26次。转载 https://www.cnblogs.com/CV-life/p/11160796.html 图像分割是计算机视觉研究中的一个经典难题,已经成为图像理解领域关注的一个热点,图像分割是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之一。所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的说就是在一副图像中,把目标从背景..._图像分割最优问题综述

推荐文章

热门文章

相关标签