下面是最常用的Tab布局,最终实现效果

MainActivity的主文件代码:

public class MainActivity extends FragmentActivity implements View.OnClickListener {//声明ViewPagerprivate ViewPager mViewPager;//适配器private FragmentPagerAdapter mAdapter;//装载Fragment的集合private List<Fragment> mFragments;//四个Tab对应的布局private LinearLayout mTabWeixin;private LinearLayout mTabFrd;private LinearLayout mTabAddress;private LinearLayout mTabSetting;//四个Tab对应的ImageButtonprivate ImageButton mImgWeixin;private ImageButton mImgFrd;private ImageButton mImgAddress;private ImageButton mImgSetting;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initViews();//初始化控件initEvents();//初始化事件initDatas();//初始化数据
    }private void initDatas() {mFragments = new ArrayList<>();//将四个Fragment加入集合中mFragments.add(new WeixinFragment());mFragments.add(new PengYouFragment());mFragments.add(new TongXunFragment());mFragments.add(new SheZhiFragment());//初始化适配器mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic Fragment getItem(int position) {//从集合中获取对应位置的Fragmentreturn mFragments.get(position);}@Overridepublic int getCount() {//获取集合中Fragment的总数return mFragments.size();}};//不要忘记设置ViewPager的适配器
        mViewPager.setAdapter(mAdapter);//设置ViewPager的切换监听mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Override//页面滚动事件public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}//页面选中事件
            @Overridepublic void onPageSelected(int position) {//设置position对应的集合中的Fragment
                mViewPager.setCurrentItem(position);resetImgs();selectTab(position);}@Override//页面滚动状态改变事件public void onPageScrollStateChanged(int state) {}});}private void initEvents() {//设置四个Tab的点击事件mTabWeixin.setOnClickListener(this);mTabFrd.setOnClickListener(this);mTabAddress.setOnClickListener(this);mTabSetting.setOnClickListener(this);}//初始化控件private void initViews() {mViewPager = (ViewPager) findViewById(R.id.id_viewpager);mTabWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);mTabFrd = (LinearLayout) findViewById(R.id.id_tab_frd);mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address);mTabSetting = (LinearLayout) findViewById(R.id.id_tab_setting);mImgWeixin = (ImageButton) findViewById(R.id.id_tab_weixin_img);mImgFrd = (ImageButton) findViewById(R.id.id_tab_frd_img);mImgAddress = (ImageButton) findViewById(R.id.id_tab_address_img);mImgSetting = (ImageButton) findViewById(R.id.id_tab_setting_img);}@Overridepublic void onClick(View v) {//先将四个ImageButton置为灰色
        resetImgs();//根据点击的Tab切换不同的页面及设置对应的ImageButton为绿色switch (v.getId()) {case R.id.id_tab_weixin:selectTab(0);break;case R.id.id_tab_frd:selectTab(1);break;case R.id.id_tab_address:selectTab(2);break;case R.id.id_tab_setting:selectTab(3);break;}}private void selectTab(int i) {//根据点击的Tab设置对应的ImageButton为绿色switch (i) {case 0:mImgWeixin.setImageResource(R.mipmap.tab_weixin_pressed);break;case 1:mImgFrd.setImageResource(R.mipmap.tab_find_frd_pressed);break;case 2:mImgAddress.setImageResource(R.mipmap.tab_address_pressed);break;case 3:mImgSetting.setImageResource(R.mipmap.tab_settings_pressed);break;}//设置当前点击的Tab所对应的页面
        mViewPager.setCurrentItem(i);}//将四个ImageButton设置为灰色private void resetImgs() {mImgWeixin.setImageResource(R.mipmap.tab_weixin_normal);mImgFrd.setImageResource(R.mipmap.tab_find_frd_normal);mImgAddress.setImageResource(R.mipmap.tab_address_normal);mImgSetting.setImageResource(R.mipmap.tab_settings_normal);}
}

“微信”“朋友” “通讯录” “设置”所对应的Fragment

public class WeixinFragment extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.weixin_main, container, false);return view;}
}

WeixinFragment.java

public class PengYouFragment extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.pengyou_main, container, false);return view;}
}

PengYouFragment.java

public class TongXunFragment extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.tongxun_main, container, false);return view;}
}

TongXunFragment.java

public class SheZhiFragment extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.shezhi_main, container, false);return view;}
}

SheZhiFragment.java

顶部布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:background="@android:drawable/title_bar"android:gravity="center"android:layout_width="match_parent"android:layout_height="45dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="微信"android:textColor="#ffffff"android:textSize="20sp"android:textStyle="bold"/></LinearLayout>

top_main.xml

底部布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="55dp"android:gravity="center"android:background="#FFF"android:orientation="horizontal"><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/id_tab_weixin"android:gravity="center"android:orientation="vertical"><ImageButtonandroid:id="@+id/id_tab_weixin_img"android:clickable="false"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/tab_weixin_pressed"android:background="#00000000"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#333"android:text="微信"/></LinearLayout><LinearLayoutandroid:id="@+id/id_tab_frd"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageButtonandroid:id="@+id/id_tab_frd_img"android:clickable="false"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/tab_find_frd_normal"android:background="#00000000"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#333"android:text="朋友"/></LinearLayout><LinearLayoutandroid:id="@+id/id_tab_address"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageButtonandroid:id="@+id/id_tab_address_img"android:clickable="false"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/tab_address_normal"android:background="#00000000"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#333"android:text="通讯录"/></LinearLayout><LinearLayoutandroid:id="@+id/id_tab_setting"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageButtonandroid:id="@+id/id_tab_setting_img"android:clickable="false"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/tab_settings_normal"android:background="#00000000"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#333"android:text="设置"/></LinearLayout></LinearLayout>

bottom_main.xml

四个Tab相应的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="30sp"android:text="我是微信"/>
</LinearLayout>

weixin_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="30sp"android:text="我是朋友"/>
</LinearLayout>

pengyou_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="30sp"android:text="我是通讯"/>
</LinearLayout>

tongxun_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:textSize="30sp"android:text="我是设置"/>
</LinearLayout>

shezhi_main.xml

主布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><include layout="@layout/top"/><android.support.v4.view.ViewPagerandroid:id="@+id/id_viewpager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></android.support.v4.view.ViewPager><include layout="@layout/bottom"/>
</LinearLayout>

activity_main.xml

以上就是效果的完整代码,直接复制就可以使用,注意把图片换成自己的图片!!!

转载于:https://www.cnblogs.com/it135/p/10355966.html

使用ViewPager + Fragment实现微信底部Tab效果相关推荐

  1. BottomNavigationView+ViewPager+Fragment仿微信底部导航栏

    目标: 要实现的界面如下: 此时,我们需要采用BottomNavigationView+ViewPager+Fragment,一点点的说起.首先要在app/build.gradle里添加: imple ...

  2. Android:viewpager+ fragment模拟微信首页

    viewpager+ fragment viewpager+ fragment模拟微信首页 1.前言 2.实现 viewpager+ fragment模拟微信首页 1.前言 ViewPager(视图滑 ...

  3. android左右滑动fragment,Android基于ViewPager+Fragment实现左右滑屏效果的方法

    本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法.分享给大家供大家参考,具体如下: 1.xml布局模板 android:id="@+id/local ...

  4. android 底部tab效果,Android 仿微信底部渐变Tab效果

    先来看一下效果图 除了第三个的发现Tab有所差别外,其他的基本还原了微信的底部Tab渐变效果 每个Tab都是一个自定义View,根据ImageView的tint属性来实现颜色渐变效果,tint属性的使 ...

  5. ViewPager+Fragment模拟微信首页详细步骤

    实现步骤: 第一步:添加ViewPager2依赖 implementation 'androidx.viewpager2:viewpager2:1.0.0' 第二步:页面布局activity_main ...

  6. android 微信布局 字体,【Android】底部Tab+ViewPager(仿微信界面)

    感谢 github的作者:wuyexiong 效果图(图片和文字都有渐变效果) 实现 主要用到自定义一个LinearLayout和ImageView 1.BottomIconView继承自ImageV ...

  7. Android studio实现底部导航,Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果...

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退. ...

  8. 3分钟教你实现仿微信底部导航栏效果(BottomNavigationView + ViewPager)

    文章目录 实现效果图 前言 XML布局 menu文件 ViewPager的使用 PagerAdapter(Java) Activity中实现 上下联动 侧滑带动按钮选择 点击底部按钮带动页面 自定义选 ...

  9. php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

最新文章

  1. Spring Boot: Tuning your Undertow application for throughput--转
  2. GDCM:检索dicom文件中某个位置存在的Icon测试程序
  3. 使用CXF 2.7.5出现的java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误解决...
  4. zephir mysql_用Zephir编写php扩展库以及生成文档、IDE提示
  5. Java面向对象(15)--static关键字静态理解与使用
  6. mysql 表上限_mysql 数据库表的上限
  7. Mac 运行goland出现can‘t load package: package xxxx is not in GOROOT问题排查
  8. 2017.9.26 块的计数 思考记录
  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
  10. sql注入检测工具之sqlmap
  11. R安装时出现辑程包不存在,解决方法
  12. 【读书笔记】巴比伦富翁的理财课
  13. 如何读书阅读--每天一本书计划
  14. 在线JSON转TSV工具
  15. Spark SQL 初识
  16. ubuntu编译ffmpeg并且demo测试
  17. 2000-2013年工企专利匹配数据库
  18. 国内运营商DM功能介绍
  19. 浙江省计算机二级考试选择判断题库,浙江省计算机二级题库(选择题判断题).doc...
  20. Manjaro开机黑屏卡住 显卡驱动问题解决及配置源和搜狗输入法安装

热门文章

  1. python博客主题_博客园SimpleMemary主题美化教程
  2. 新浪下拉菜单(js原生版本)
  3. mfc调取摄像头显示并截图_用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频...
  4. Linux 操作系统(I)
  5. 设计学生证信息管理系统(C++实现,附源代码,详细解析)
  6. Unity3D基础31:脚本生命周期
  7. 互联网控制协议ICMP
  8. python 3.6.5 pillow 实现图片的切割
  9. [Python] zeros(r, c)和ones(r, c)和eye(n) 生成特殊矩阵
  10. [PyTorch] 深度学习框架PyTorch中的概念和函数