使用TabLayout和Viewpager实现选项卡切换

android之ViewPager与TabLayout 使用 TabLayout 很容易实现选项卡的功能。这里将结合 ViewPager、Fragment、TabLayout实现一个具有选项卡功能的程序。本例再上篇讲解的ViewPager与Fragment实例上修改,请结合上篇实例参考。 要实现这样一个程序,首先需要在布局文件中加入 TabLayout。MainActivity中对应的布局文件代码如下: ... 阅读详情

MainActivity

package com.jj.yuekao.demo08;

import android.os.Bundle;
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.support.v7.app.AppCompatActivity;

import com.jj.yuekao.R;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;

public class Main8Activity extends AppCompatActivity {
  private Unbinder unbinder;
    @BindView(value = R.id.tab_layout_id)
    TabLayout mTabLayout;
    private List<String> titles=new ArrayList<>();
    @BindView(value = R.id.view_pager_id)
    ViewPager mViewPager;
    private List<Fragment> data=new ArrayList<>();
    private MyAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main8);

        unbinder= ButterKnife.bind(this);

        titles.add("页面一");
        titles.add("页面二");
        titles.add("页面三");
        titles.add("页面四");

         data.add(new ShengQianFragment());
        data.add(new OtherFragment());
        data.add(new OtherFragment());
        data.add(new OtherFragment());

        adapter=new MyAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(adapter);

        mTabLayout.setupWithViewPager(mViewPager);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unbinder.unbind();
    }

    class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return data.get(position);
        }

        @Override
        public int getCount() {
            return data.size();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return titles.get(position);
        }
    }
}

  OtherFragment

package com.jj.yuekao.demo08;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.jj.yuekao.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class OtherFragment extends Fragment {


    public OtherFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }

}

  ShengQianFragment

package com.jj.yuekao.demo08;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;

import com.jj.yuekao.R;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * A simple {@link Fragment} subclass.
 */
public class ShengQianFragment extends Fragment {

    @BindView(value = R.id.gv_id)
    GridView mGridView;
    public ShengQianFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_sheng_qian,container,false);
        ButterKnife.bind(this,view);
        return view;
    }

}

 fragment_blank

<FrameLayout 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"
    tools:context="com.jj.yuekao.demo08.OtherFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>

 fragment_sheng_qian

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <GridView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="2"
        android:id="@+id/gv_id"></GridView>
</FrameLayout>

Android底部导航栏实现:TabLayout与ViewPager 接着,在代码中获取TabLayout和ViewPager的实例,并创建自定义的PagerAdapter来管理ViewPager的页面内容。最后,将TabLayout与ViewPager关联起来,实现选项卡和页面内容的同步切换。通过调用setupWithViewPager()方法,TabLayout会自动根据PagerAdapter的设置生成对应数量的选项卡,并将它们与ViewPager关联起来。在上述布局文件中,我们使用TabLayout来定义底部的选项卡,ViewPager用于显示对应的页面内容。 阅读详情

相关推荐

实现自定义可滑动的tab选项卡

ViewPager是Android开发中用于页面浏览的一个组件,通常用于实现左右滑动切换页面的场景。它的设计初衷是为了解决在屏幕上展示多个页面内容时用户交互的便利性,使得用户可以通过简单的滑动动作查看相关内容。ViewPager组件常与Fragment结合使用,每个Fragment充当一个页面,通过ViewPager的滑动切换功能可以非常流畅地在各个Fragment之间进行切换。如果你需要实现一些特殊的过渡效果,或者需要更多的自定义控制,可以通过编程的方式来自定义动画。你可以使用或。

weixin_31620365的博客 843

Android ViewPager使用详解

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需要一个适配器,他就是PagerAdapter。看一下api的图片, ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。分三个步

极致的专注 无限的热情 38万+

Android Tab选项卡切换实战教程

Android平台上的Tab选项卡切换功能,为应用提供了按需加载内容的界面结构,方便用户在不同数据集或功能模块间快速切换。其核心思想是将复杂的操作流程和大量信息进行模块化处理,以便于更好地进行信息展示和交互。本章将从Tab选项卡切换的基本概念讲起,对它在Android应用中的作用进行概述,并讨论其在用户界面设计中的重要性。接下来,章节将深入探讨实现Tab选项卡切换的主要组件ViewPager和TabLayout,以及如何通过它们来构建流畅的用户体验。

weixin_35696112的博客 533

uni-app实现简单选项卡功能

1.先写一个外框,再写2个内容,先把选项卡固定在顶部使用display: flex;,随后写2个不同的样式去区分选中和未选择。2.三目运算分别给他们赋一个排序,点击的时候获取是第一个还是第二个,如果选中则添加inv-h-se样式。这样就实现了一个简单的选项卡功能,样式的话可以根据自己需要来进行更改。4.最后写2个不同的容器,使用v-show来切换。3.return中默认显示第一个。

SqlloveSyn的博客 1233

Android viewpage滑动选项卡

Android viewpage滑动选项卡。根据android.support.v4.view.ViewPager的jar包。自定义CustomViewPaper继承ViewPager。滑动选项卡。 我博客网址: http://blog.youkuaiyun.com/qq_16064871。我写了很多博客都是有源码的,请多多关注。

ViewPager选项卡

使用ViewPager实现选项卡功能,可以将内容替换成Fragment,选项卡数量,自定义

TabLayout的使用及详解

TabLayout    配合  ViewPager使用 步骤1: <android.support.design.widget.TabLayout android:id="@+id/me_shop_order_tab" style="@style/Me_Shop_Order_TabLayout_Style" app:tabIndicatorColor="@colo

XiFangzheng的博客 1311

ViewPager实现选项卡效果并滑动切换

唯一不完美的就是,选项卡下方的横线不能边滑边动

ViewPager实现各个选项卡之间的切换

ViewPage是安卓V4包中提供的一个组件,作为一个布局管理器,继承于ViewGroup和LinearLayout/FrameLayout等同属于布局管理器.一般ViewPage允许用户通过向左向右滑动实现页面的切换,当然你还需要实现一个PageAdapter来提供切换所需要的View.wPage作为一个布局管理器,那有时候项目可能会需要你来实现一个能在各个选项卡之间来回切换的功能,那么View

谢栋的专栏 2218

通过TabLayout和ViewPager实现Tab切换

通过TabLayout和ViewPager这两个控件可以实现Tab切换的效果。而且能通过属性设置来设定滑动条的高度和颜色、字体的颜色等

Android ViewPager实现选项卡切换

主要介绍了Android ViewPager实现选项卡切换,详细分析了ViewPager实现选项卡切换功能,感兴趣的小伙伴们可以参考一下

安卓 TabLayout 选项卡

安卓 专高 day07 TabLayoutTabLayout简介Fragment+ViewPager+TabLayout组合使用 TabLayout简介 Tablayout继承自HorizontalScrollView用于页面切换指示器 TabLayout 是属于 com.android.support:design 包的控件,所以需要依赖该包 implementation 'com.androi...

zxsenqiu的博客 346

企业信息化系统的组成模块-核心业务系统

通过标准化的数据流形成完整的业务闭环,CRM生成的销售订单驱动ERP的生产和采购,ERP将生产计划传递给MES执行,MES报工数据返回ERP进行成本核算,ERP再将交付信息同步给CRM供客户查询。生产管理确保高效交付,缩短订单周期。某贸易公司实施ERP供应链模块后,库存周转率从每年4次提升到8次,库存资金占用从2000万降到1200万,释放800万现金流,同时缺货率从15%降到5%。│ │库存 │ │ MRP │ │ ERP │ │ 云ERP/ │ │。

weiyvyy的博客 695

Android学习笔记 56. TabLayout 选项卡布局

Android学习笔记 56. TabLayout 选项卡布局

代码改变世界 1846

如何用Megatron-LM搭建多卡集群?手把手教你配置分布式训练环境

本文提供了一份详细的Megatron-LM多卡集群搭建实战指南。从硬件兼容性检查、软件栈版本对齐,到分布式并行策略(数据并行、张量并行、流水线并行)的配置与多节点启动脚本编写,手把手教你配置稳定高效的分布式训练环境,并分享了关键的排错与性能调优经验。

yellow的专栏 414

告别配置烦恼!保姆级教程:在Windows 10/11上为QT5.14.2配置MSVC2017编译器(附VS2022组件避坑指南)

本文提供了一份详细的保姆级教程,指导如何在Windows 10/11上为QT5.14.2配置MSVC2017编译器,包括VS2022组件避坑指南。从环境准备到关键配置,再到调试工具验证和Qt Creator中的编译器设置,一步步解决常见问题,帮助开发者快速搭建稳定可靠的开发环境。

weixin_30615767的博客 502

android 页卡切换实现,TabLayout+ViewPager实现选项卡切换效果

原来项目中一直使用tabhost做切换效果,最近在整理代码,决定放弃tabhost,使用google自带的切换布局TabLayout .其实TabLayout实现切换效果还是蛮简单的,跟tabpageindicator类似,不过原来没弄过,还是折腾了一会儿.本次demo是TabLayout+ViewPager来实现切换滑动效果的.首先要添加依赖包,TabLayout是google的design包最...

weixin_42526166的博客 485

5G NR LDPC码(2)—— 从基图到速率匹配:解码5G高速数据信道的标准化设计

本文深入解析了5G NR LDPC码的标准化设计流程。从作为核心骨架的基图(BG1/BG2)出发,详细阐述了其如何通过扩展因子Z灵活生成实际校验矩阵,并协同传输块大小计算与分段策略。文章重点剖析了基于循环缓存和冗余版本的速率匹配机制,以及其如何高效支撑增量冗余混合自动重传请求,从而确保5G高速数据信道在复杂环境下的可靠与高效传输。

weixin_29206669的博客 272

Android学习笔记(七)--滑动选项卡TabLayout

今天想做一个类似腾讯体育那样的滑动选项卡,一开始的想法是选项卡是可以滑动扩展的就用个scrollview里面放button,下面用一个ViewPager,觉得实现起来也不复杂,然后发现官方为我们提供了一个TabLayout,使用起来也比较方便,先上一下效果图。 看一下主活动的布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns

CallMeSP的博客 926

第七章 Wi-Fi连接过程

系列文章目录 第一章 国内下载AOSP最新源码的方法 第二章 下载AOSP WiFi相关的代码 第三章 将源码导入Android Studio(无需编译idegen) 文章目录系列文章目录前言一、Wi-Fi连接是什么?二、Wi-Fi连接的过程1. 手动连接总结 前言 Wi-Fi连接分为下面几种过程,每种的流程都有些许差异: 手动连接 自动连接 在BSS之间漫游 Passpoint热点连接 一、Wi-Fi连接是什么? Wi-Fi连接是指STA(手机)连接到AP(无线路由器)的过程,这个过程分为链路

Frank.Zhang的专栏 2527

从LLaMA到LLaMA-MoE:轻量级混合专家模型构建与实战指南

混合专家(Mixture-of-Experts, MoE)是一种先进的神经网络架构,其核心原理是通过门控网络动态地为不同输入选择不同的专家子网络进行计算,从而实现模型容量的指数级扩展,同时保持推理时的计算量基本不变。这种稀疏激活的特性赋予了MoE极高的技术价值,使其成为解决大模型训练与推理成本矛盾的关键技术之一,在自然语言处理、多模态学习等场景中展现出巨大潜力。本文聚焦于**LLaMA-MoE**这一具体实践,深入探讨了如何基于成熟的稠密模型(如LLaMA),通过**专家构建**与**持续预训练**两大关键

weixin_28730549的博客 565

超简单的ViewPager导航栏联动实现--TabLayout

效果如下: 实现这个效果非常的简单,就两个控件,一个TabLayout,一个ViewPager,主要通过TabLayout的setupWithViewPager() 方法来使TabLayout和ViewPager联动 下面说说具体实现步骤。 1,TabLayout有自己的包,所以第一步是在build.gradle里面添加依赖包,具体代码是: compile 'com.an

段炼 9097

Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)

本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。

weixin_30082367的博客 555

TabLayout+ViewPager+Fragment实现页面滑动

①在main布局创建TabLayout与ViewPager;②在main的Java代码中找到TabLayout与ViewPager空间,并创建标题title与内容fragment;③将title与fragment赋值给ViewPager,并将TabLayout与ViewPager建立联系;④自定义fragment,用if进行判断,滑动到相应的界面 项目具体代码加详细解释: MainActivity...

qq_40796375的博客 426

040、全志V853低功耗AI视觉平台的ISP调优——电池供电场景下的画质与功耗平衡

本文分享了全志V853 AI视觉平台在电池供电场景下的ISP调优经验。作者通过实际项目踩坑案例,揭示了V853 ISP的特殊性:不同于主流平台,其ISP与CPU共享时钟域,降噪能力有限,需特别注意功耗控制。关键优化策略包括:关闭无效ISP模块、优化Sensor联动时钟、采用场景自适应配置、开发快速启动模式等。特别指出V853个体差异大,量产需考虑高低温影响。文章强调V853的ISP功耗优化需从寄存器级别精打细算,不能简单套用其他平台经验,建议选型时单独评估ISP功耗,避免续航缩水。

zzfmlxs的博客 26

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 使用WebView加载内容
下一篇: 用Retrofit加载字符串
wind_Cill
博客等级 码龄9年 4粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值