iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android仿微信底部实现Tab选项卡切换效果
  • 526
分享到

Android仿微信底部实现Tab选项卡切换效果

tabAndroid 2022-06-06 09:06:58 526人浏览 独家记忆
摘要

在网上看了比较多的关于Tab的教程,发现都很杂乱。比较多的用法是用TitlePagerTabStrip和ViewPaper。不过TitlePagerTabStrip有个很大的缺

在网上看了比较多的关于Tab的教程,发现都很杂乱。比较多的用法是用TitlePagerTabStrip和ViewPaper。不过TitlePagerTabStrip有个很大的缺陷,Tab里面的内容刚进去是没有的,要滑一次才能加载出来。而且滑动的时候,Tab里面的内容位置不是固定的,滑倒最后会出现一片空白,非常不美观。虽然有其他的补救方法,但是非常的麻烦,所以我就按照自己的方法实现了一个,功能不错而且非常简单。

 直接点击或者是滑动界面,都可以转到相应的页面。

效果图:

 原理是用了三个按钮和ViewPaper,抛弃了TitlePagerTabStrip。

 ViewPaper通俗的说,它是一个装页面的容器。如上图我有三个不同的界面,是因为我把三个view加了进去。然后再把这个viewPaper加到主界面的布局中。

这样,主界面上就有三个按钮,按钮下方是一个viewPaper,这个viewPaper里面有三个view,我每滑一下或点击按钮就会跳到相应的view。

就是说我们看到的,其实都是主界面,按钮是一直在那的。我们只是不断的转换viewPaper这个容器里面的视图而已。

主界面的布局代码:


<RelativeLayout 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=".MainActivity" >
  <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</RelativeLayout>

怎么实现,按相应的按钮跳转到viewPaper中相应的视图呢?很简单,只要为按钮设置监听,然后调用viewPaper的setCurrentItem()这个函数就行。

对于相应的页面,我们的按钮也应该有相应的变化,如上图我们的按钮中的英文变成了√。这个只要在viewPaper的监听器中重载onPageSelected()这个函数就行,

每个页面被选中,都会调用这个函数。在这个函数里判断当前的页面是哪一个,然后再对按钮做出相应的改变即可。
onCreate的代码


 //设置viewPaper
  ViewPager pager = null;
  ArrayList<View> viewContainter = new ArrayList<View>();
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add);
    //实例化ViewPaper
    pager = (ViewPager) this.findViewById(R.id.viewpager3);
    //设置按钮跳转到相应的viewPaper页面
    按钮1.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //跳到第一个页面
        pager.setCurrentItem(0);
      }
    });
    按钮2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //第二个页面
        pager.setCurrentItem(1);
      }
    });
    按钮3.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //第三个页面
        pager.setCurrentItem(2);
      }
    });
    //为viewPaper设置内容
    //view是我们放进viewPaper里面的东西,要为它设置好布局,再放进去
    View view1 = LayoutInflater.from(this).inflate(R.layout.自己的布局文件1, null);
    View view2 = LayoutInflater.from(this).inflate(R.layout.自己的布局文件2, null);
    View view3 = LayoutInflater.from(this).inflate(R.layout.自己的布局文件3, null);
    //这是个ArrayList,加进去了3个view
    viewContainter.add(view1);
    viewContainter.add(view2);
    viewContainter.add(view3);
    //设置适配器 这里的代码复制即可
    pager.setAdapter(new PagerAdapter() {
      //viewpager中的组件数量
      @Override
      public int getCount() {
        return viewContainter.size();
      }
      //滑动切换的时候销毁当前的组件
      @Override
      public void destroyItem(ViewGroup container, int position,
                  Object object) {
        ((ViewPager) container).removeView(viewContainter.get(position));
      }
      //每次滑动的时候生成的组件
      @Override
      public Object instantiateItem(ViewGroup container, int position) {
        ((ViewPager) container).addView(viewContainter.get(position));
        return viewContainter.get(position);
      }
      @Override
      public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
      }
      @Override
      public int getItemPosition(Object object) {
        return super.getItemPosition(object);
      }
    });
    //页面变化时的监听 改变按钮
    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
      @Override
      public void onPageScrolled(int i, float v, int i1) {
      }
      @Override
      public void onPageSelected(int i) {
        switch (i) {
          //如果是第一个页面
          case 0:
            按钮1.setText("√");
            按钮2.setText("TAB2");
            按钮3.setText("TAB3");
            break;
          //如果是第二个页面
          case 1:
            按钮1.setText("TAB1");
            按钮2.setText("√");
            按钮3.setText("TAB3");
            break;
          //如果是第三个页面
          case 1:
            按钮1.setText("TAB1");
            按钮2.setText("TAB2");
            按钮3.setText("√");
            break;
        }
      }
      @Override
      public void onPageScrollStateChanged(int i) {
      }
    });
  }

想用到每个view里面的控件的话,在主界面上是找不到这些控件的,都是空的。 必须在instantiateItem这个函数里面指定。


@Override
      public Object instantiateItem(ViewGroup container, int position) {
        ((ViewPager) container).addView(viewContainter.get(position));
        switch (position){
          case 0: {
            //在第一个页面中
            }
          }
}
您可能感兴趣的文章:Android基于ViewPager实现类似微信页面切换效果Android实现简单底部导航栏 Android仿微信滑动切换效果Android实现微信首页左右滑动切换效果Android App仿微信界面切换时Tab图标变色效果的制作方法Android仿微信左右滑动点击切换页面和图标


--结束END--

本文标题: Android仿微信底部实现Tab选项卡切换效果

本文链接: https://www.lsjlt.com/news/25761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现简单底部导航栏 Android仿微信滑动切换效果
    Android仿微信滑动切换最终实现效果:大体思路: 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标;2. 底部导航栏的设置方法类似于TabLayout的关联,View...
    99+
    2023-05-30
    android 导航栏
  • Android仿微信底部菜单栏效果
    前言在市面上,大多数的APP都需要通过底部菜单栏来将程序的功能进行分类整理,通常都是分为3-5个大模块,从而正确有效地引导用户去使用我们的APP。实现底部菜单栏的方法也有很多种。1.仿微信底部菜单栏(ViewPager+ImagerView...
    99+
    2023-05-30
    android 菜单
  • Vue实现Tab选项卡切换
    本文实例为大家分享了Vue实现Tab选项卡切换的具体代码,供大家参考,具体内容如下 点击不同的标题显示出相应的图片 代码如下 <!DOCTYPE html> <...
    99+
    2024-04-02
  • Vue实现选项卡tab切换制作
    本文实例为大家分享了Vue实现选项卡tab切换制作代码,供大家参考,具体内容如下 1.主要的实现功能如下:(点击进行切换,这里我不做太多的样式处理了,主要看功能) 2.话不多说:主...
    99+
    2024-04-02
  • Css怎么实现tab选项卡切换
    这篇文章主要介绍了Css怎么实现tab选项卡切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Css实现tab选项卡切换的方法:利用target的特性,可以实现纯css的ta...
    99+
    2023-06-14
  • 微信小程序实现简单Tab切换效果
    本文实例为大家分享了微信小程序实现Tab切换效果的具体代码,供大家参考,具体内容如下 使用步骤 代码如下(示例): 定义一个状态status data: { status:...
    99+
    2024-04-02
  • Android自定义选项卡切换效果
    本文实例为大家分享了Android自定义选项卡切换效果的具体代码,供大家参考,具体内容如下 一、实际使用的效果 二、自定义可切换的标题栏 1、布局 <?xml v...
    99+
    2024-04-02
  • 微信小程序实现tab页面切换效果
    本文实例为大家分享了微信小程序实现tab页面切换的具体代码,供大家参考,具体内容如下 html 页面 <view class="bgwhite">     <sc...
    99+
    2024-04-02
  • 微信小程序如何实现tab切换效果
    这篇文章将为大家详细讲解有关微信小程序如何实现tab切换效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序之tab切换效果,如图:最近在学习微信小程序并把之前的...
    99+
    2024-04-02
  • 如何实现js选项卡切换效果
    这篇文章主要介绍如何实现js选项卡切换效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果如图:具体代码:<!DOCTYPE html> <html&g...
    99+
    2024-04-02
  • Vue.js中tab怎么实现选项卡切换
    这篇文章主要介绍Vue.js中tab怎么实现选项卡切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下<!DOCTYPE html> <html...
    99+
    2024-04-02
  • JS怎么实现选项卡切换效果
    这篇文章主要为大家展示了“JS怎么实现选项卡切换效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS怎么实现选项卡切换效果”这篇文章吧。相关代码:<!DOCTYPE html&...
    99+
    2023-06-27
  • jquery选项卡切换效果怎么实现
    要实现jQuery选项卡切换效果,可以按照以下步骤进行操作:1. 创建HTML结构,使用`ul`和`li`元素创建选项卡的导航栏,使...
    99+
    2023-08-15
    jquery
  • CSS3中怎么实现tab选项卡切换功能
    本篇文章给大家分享的是有关CSS3中怎么实现tab选项卡切换功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CSS3伪类target利用ta...
    99+
    2024-04-02
  • js开发插件实现tab选项卡效果
    本文实例为大家分享了js插件实现tab选项卡效果的具体代码,供大家参考,具体内容如下 一、搭建页面 <div class="tab" data-config='{ // 在...
    99+
    2024-04-02
  • 怎么在微信小程序中实现一个Tab切换效果
    这篇文章给大家介绍怎么在微信小程序中实现一个Tab切换效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用步骤代码如下(示例):定义一个状态statusdata: {   st...
    99+
    2023-06-15
  • JavaScript插件如何实现Tab选项卡效果
    这篇文章将为大家详细讲解有关JavaScript插件如何实现Tab选项卡效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,来看看最终效果:这是一款普通的Tab选项卡...
    99+
    2024-04-02
  • CSS如何实现简单的选项卡切换效果
    这篇文章将为大家详细讲解有关CSS如何实现简单的选项卡切换效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   页面布局及样式:   <divclass=&q...
    99+
    2024-04-02
  • Android如何实现仿网易严选底部弹出菜单效果
    这篇文章将为大家详细讲解有关Android如何实现仿网易严选底部弹出菜单效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先展示效果图如下:是不是还可以呢,由于代码量不多却注释详细,所以先贴出代码再一一...
    99+
    2023-05-30
    android
  • AngularJS如何实现标签页tab选项卡切换功能
    这篇文章将为大家详细讲解有关AngularJS如何实现标签页tab选项卡切换功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:选项卡一:JavaScript+h...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作