ViewPager实现Tab

利用ViewPager实现可左右滑动的Action Tab 1. ViewPager要点: ViewPager 是一个布局管理类(layout manager),用于提供页面的左右滑动功能,类似于ListView,也有为ViewPager提供     数据(Fragment)的 adapter 控制类(FragmentPagerAdapter, FragmentStatePagerAdapter)。ViewPager 经常和 Fragment 一 阅读详情

由于手机本身的空间没那么大,所以大部分情况我们都会使用tab来实现扩展手机页面。今天这篇博客我主要写下如何利用ViewPager 实现tab。
这里首先我们要准备好布局。
这里写图片描述
一个title布局,一个bottom布局,中间是一个ViewPager控件,这里我准备了3个tab布局。
这里写图片描述

布局文件就不做过多说明了,主要说下活动里面利用ViewPager实现Tab。
首先声明几个对象

    private ViewPager mViewPager;
    private List<View> mlist=new ArrayList<>();
    private PagerAdapter mAdapter;

    private LinearLayout mL1;
    private LinearLayout mL2;
    private LinearLayout mL3;
    private ImageButton ml1_img;
    private ImageButton ml2_img;
    private ImageButton ml3_img;

第二行代码声明了一个View类型的List集合,保存每一个tab页面。
ViewPager需要声明PagerAdapter适配器。
剩下的代码就是第一张图片里面的控件声明。

    LayoutInflater mInflater=LayoutInflater.from(this);
        View tab_01=mInflater.inflate(R.layout.tab1,null);
        View tab_02=mInflater.inflate(R.layout.tab2,null);
        View tab_03=mInflater.inflate(R.layout.tab3,null);

        mlist.add(tab_01);
        mlist.add(tab_02);
        mlist.add(tab_03);

把tab添加到List集合里面之后,声明PagerAdapter内部类。

mAdapter=new PagerAdapter() {

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

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view==object;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView(mlist.get(position));
            }

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view=mlist.get(position);
                container.addView(view);
                return view;
            }
        };

默认生成前两个方法,我们还需要再重写后两个方法,一个是初始化item,一个是移走item.
PagerAdapter写完之后,通过ViewPager的setAdapter()方法联系在一起。

mViewPager.setAdapter(mAdapter);

此时运行我们左右滑动,可以实现页面切换,但是页面下面的bottom没有任何变化。接下来的博客说下如何实现下面的bottom的控件和页面切换保持一致。

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

相关推荐

(TabLayout+ViewPager实现tab切换)使用示例

此作为博客(TabLayout+ViewPager实现tab切换)的使用示例,如有问题请留言。

ViewPage实现tab页

<LinearLayout android:layout_width="fill_parent" android:layout_height="48dp" android:background="#FFFFFF"> <TextView android:id="@+id/tv_one" android:layou...

xdy1120的博客 744

Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南)

本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。

weixin_29210727的博客 409

ViewPager实现Tab布局

android.support.v4.view.ViewPager         android:id="@+id/content"         android:layout_width="fill_parent"         android:layout_height="0dp"         android:layout_weight="1" > android.supp

拥小抱的小葵花爸爸课堂 631

Flow Matching实战:5步搞定图像生成模型优化(附PyTorch代码)

本文提供了一份基于Flow Matching框架优化图像生成模型的实战指南。通过五个关键步骤,详细讲解了从环境配置、核心概念梳理到构建向量场网络、设计损失函数、编写训练循环以及选择ODE求解器进行采样的完整流程,并附有可运行的PyTorch代码,帮助开发者快速掌握这一高效的生成式建模技术。

weixin_29065959的博客 320

ml307 二次开发

中移物联网旗下4g模组官方网站官方教程id=514官方客户不知道啥时候上班 早上10点也说不在服务时间内 找不到官方的sdk下载路径。

myWorld001的博客 2878

Android: ViewPager+Tab特效实现微信主界面

本文是记述hyman大神的《ViewPager+Tab特效实现微信主界面》的主要知识点 Viewpager + FragmentPagerAdapter/FragmentStatePagerAdapter[区别] Fragment与Activity的正确通信: Activity调用Fragment中的方法 Fragment调用Activity中的方法: a.考虑Fragment为复用...

手写我对你的温柔 1372

【程序化天空盒】过程记录01:日月 天空渐变 大气散射

在做一个仿照原神的天空盒,写文章作为技术总结和记录。

qq_41835314的博客 6741

ViewPager和ViewPager2的简单使用,TabLayout与ViewPager2联用以及轮播图的实现。

ViewPager和ViewPager2的简单使用,TabLayout和ViewPager2的联用以及轮播图的实现代码。

m0_74000465的博客 1927

OpenGL计算着色器工作组设置测试

先看看不同的显卡上工作组的数量情况。 glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, data); glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, data + 1); glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 2, data...

qq_26328385的博客 1484

Python散点图(Scatter Plot):高阶分析、散点图矩阵、三维散点图及综合应用

散点图作为一种直观且功能强大的数据可视化工具,在数据分析中具有广泛的应用。通过观察散点图中数据点的分布模式,我们可以轻松地判断变量之间是否存在相关性,以及相关性的类型和强度。同时,散点图也是识别数据集中异常值的有效工具,无论是通过直观观察还是结合统计方法,都能帮助我们发现数据中的异常情况。掌握散点图的绘制和分析技巧,将使我们在数据探索和决策制定中更加得心应手。

SiArch的博客 1444

ViewPager+TabLayout的两种使用方式

1.什么是TabLayout 在源码中给出了TabLayout的定义: TabLayout provides a horizontal layout to display tabs. 意思很明显:TabLayout提供了一个水平的布局用来展示Tabs。 Fragment适配器区别: 1.FragmentStatePagerAdapter 继承子 pager。该 PagerAdapte...

qq_38812658的博客 6352

一键熄火:在 SAP ABAP 平台停用 OAuth 2.0 Client 的正确姿势

本文是一篇面向SAP ABAP平台运维与开发团队的实战指南,重点讲解了OAuth 2.0客户端的停用操作。文章首先阐述了停用的必要性——当客户端存在泄漏风险或配置错误时,停用能在阻断访问的同时保留配置。随后详细介绍了通过SOAUTH2事务码执行停用的具体步骤,并区分了"停用"、"删除"和"撤销令牌"三个关键概念及其适用场景。 文章提供了两个真实案例:一个是怀疑客户端泄漏后的紧急处置流程,另一个是合规审计期间的冻结与恢复操作。最后总结了一份验证清单,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 278

ViewPager+Fragment实现Tab主界面

毕竟是第一次做项目,所以在每一点上都做得特别认真,接下来我来给大家大致讲述一下用ViewPager+Fragment来实现app Tab主界面,突然想起来LZ居然2天没去上课了......(>.... package com.bob.tabui; import android.support.v4.app.*; import android.os.Bundle; import android.

My life,my way 6526

国产化替代落地:C#+Avalonia跨平台开发(麒麟系统适配全流程)

摘要: 随着国产化替代政策的推进,麒麟操作系统成为国产替代的重要选择。本文介绍了如何使用C#和Avalonia框架开发跨平台应用,适配麒麟系统。Avalonia支持Windows、Linux(包括麒麟)和macOS,通过XAML设计UI,便于开发者快速上手。文章详细讲解了开发环境配置、XAML控件设计、Linux特性适配及性能优化,并强调政府30%研发补贴带来的政策红利。未来,随着国产系统生态完善,C#+Avalonia将成为企业跨平台开发的高效解决方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3475

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

使用ViewPager和FragmentPagerAdapter实现Tab

前面我们分别利用ViewPager和Fragment实现了Tab效果。但是使用Fragment实现的Tab不能够左右滑动。如果我们既想使用Fragment又想让Tab能够滑动,那么怎么办呢?这 就是今天的方法,利用ViewPager和FragmentPagerAdapter来实现Tab。 没看过前两篇文章的读者可以点击下面的地址: http://www.cnb...

bai8005的博客 177

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android利用ViewPager实现Tab

Android利用ViewPager实现Tab布局 以下为最终结果: 使用Tab类型的发布项目具有很多,比如典型的微信.. QQ等都具备,这也是手机程序中不可缺少的一种布局方式。现在就好好聊聊怎么实现的,其实非常简单!(想要学习本列, 需要掌握ViewPager'的基本用法) 思路:    1)   我们整体的布局文件要创建好。 因今天不是讲解布局文件,所以等下我就直

阿尔卑斯的春天oO 的博客 656

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android实现带Tab页引导的ViewPager

Tab页很适合用来做平行功能之间的引导,而各功能页面用ViewPager来展示会显得比较平滑、过渡自然,所以自然就有了许多软件将二者结合,用于展示主功能界面,比如网易新闻和360优化大师的主界面,那么下面就来做一个这样的带Tab页的ViewPager吧~ 基本需求:1,点击Tab页,ViewPager做出相应滑动,且Tab页中有表示切换的动画   2,滑动ViewPager,Tab页中有表示切

love android 819

android 微信tab切换,android实现微信tab切换之-ViewPager

ViewPager是我们在android开发中常用的一个组件,今天在本文中我们将用ViewPager实现类似微信的Tab切换这样一个功能,本文只适用于android开发初学者,大牛请绕道,先上图。 首先要实现以上功能,需要准备一些素材图片,素材图片我们的源码中有。要实现如上图所示的效果,我们需要对整个界面布局,那么在上图中,页面可以分成三个部分top,content,bott...

weixin_42489088的博客 767

FragmentPagerAdapter+ViewPager实现Tab

FragmentPagerAdapter+ViewPager实现Tab 1.1 效果 1.2 目录 1.3 素材 1.4 顶部提示栏top.xml 1.5 底部标签bottom.xml 1.6 activity_main.xml 1.7 四个切换界面 1.7.1 tab01.xml 1.7.2 tab02.xml 1.7.3 tab03.xml 1.7.4 tab04.xml 1.8 四个...

amoscxy的博客 847

使用ViewPager实现Tab

一、效果演示及分析 我们直接看两幅图。如下: 上两幅图实现的效果就是: (1)手指左右滑动时,中间的布局呈现不同的效果。而且下面的按钮也会做相应的改变。 (2)我们也可以不左右滑动,直接点击下面的按钮来改变中间的布局。 这就是android开发中经常要用到的Tab效果,可以最大...

bai8005的博客 198

Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可以相应地完成切换,而当我们点击Tab时,我们的屏幕同样可以完成切换。讲到滑动,我们会立即想到PagerView,讲到ActionBar,我们立即会想到将ActionBar的导航模式。那么,我们今天要做的

让软件普及到企业中去而奋斗终生 7119

FragmentPagerAdapter+ViewPager实现Tab切换效果

1.Activity  加载布局文件,获取Viewpager控件   给ViewPager填充适配器. import android.app.ActionBar;  import android.app.ActionBar.Tab;  import android.app.Activity;  import android.app.Fragment;  import android.ap

209
上一篇: SQL分页加载数据
下一篇: ViewPager实现Tab(2)
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值