ViewPager+Fragment实现支持左右滑动的Tab
主要思想:顶部标题栏top.xml,中间ViewPager(4个Fragment),底部导航
top.xml和bottom.xml在我之前的两个随笔里有,此处不再赘述。
activity_main.xml具体实现:
<LinearLayout 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" android:orientation="vertical" ><include layout="@layout/top" /><android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" > </android.support.v4.view.ViewPager><include layout="@layout/bottom" /></LinearLayout>
不同的是MainActivity.java文件的实现。
MainActivity.java具体实现:
package com.imooc.tab03;import java.util.ArrayList; import java.util.List;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.ImageButton; import android.widget.LinearLayout;public class MainActivity extends FragmentActivity implements OnClickListener { private ViewPager mViewPager; private FragmentPagerAdapter mAdapter; private List<Fragment> mFragments;private LinearLayout mTabWeixin; private LinearLayout mTabFrd; private LinearLayout mTabAddress; private LinearLayout mTabSettings;private ImageButton mImgWeixin; private ImageButton mImgFrd; private ImageButton mImgAddress; private ImageButton mImgSettings;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main);initView(); initEvent();setSelect(1); }private void initEvent() { mTabWeixin.setOnClickListener(this); mTabFrd.setOnClickListener(this); mTabAddress.setOnClickListener(this); mTabSettings.setOnClickListener(this); }private void initView() { 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); mTabSettings = (LinearLayout) findViewById(R.id.id_tab_settings);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); mImgSettings = (ImageButton) findViewById(R.id.id_tab_settings_img);mFragments = new ArrayList<Fragment>(); Fragment mTab01 = new WeixinFragment(); Fragment mTab02 = new FrdFragment(); Fragment mTab03 = new AddressFragment(); Fragment mTab04 = new SettingFragment(); mFragments.add(mTab01); mFragments.add(mTab02); mFragments.add(mTab03); mFragments.add(mTab04);mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Override public int getCount() { return mFragments.size(); }@Override public Fragment getItem(int arg0) { return mFragments.get(arg0); } }; mViewPager.setAdapter(mAdapter);mViewPager.setOnPageChangeListener(new OnPageChangeListener() {@Override public void onPageSelected(int arg0) { int currentItem = mViewPager.getCurrentItem(); setTab(currentItem); }@Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub }@Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); }@Override public void onClick(View v) { switch (v.getId()) { case R.id.id_tab_weixin: setSelect(0); break; case R.id.id_tab_frd: setSelect(1); break; case R.id.id_tab_address: setSelect(2); break; case R.id.id_tab_settings: setSelect(3); break;default: break; } }private void setSelect(int i) { setTab(i); mViewPager.setCurrentItem(i); }private void setTab(int i) { resetImgs(); // 设置图片为亮色 // 切换内容区域 switch (i) { case 0: mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed); break; case 1: mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed); break; case 2: mImgAddress.setImageResource(R.drawable.tab_address_pressed); break; case 3: mImgSettings.setImageResource(R.drawable.tab_settings_pressed); break; } }/** * 切换图片至暗色 */ private void resetImgs() { mImgWeixin.setImageResource(R.drawable.tab_weixin_normal); mImgFrd.setImageResource(R.drawable.tab_find_frd_normal); mImgAddress.setImageResource(R.drawable.tab_address_normal); mImgSettings.setImageResource(R.drawable.tab_settings_normal); }}
转载于:https://www.cnblogs.com/rainmer/p/4255064.html
ViewPager+Fragment实现支持左右滑动的Tab相关推荐
- TabHost+ViewPager+Fragment实现页面的滑动,android开发工具deve
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width=&qu ...
- 处女男学Android(十一)---Gallery、ViewPager和ViewPager+Fragment实现的Tab导航
一.前言 转载请标明出处:http://blog.csdn.net/wlwlwlwl015/article/details/42087915 有阵子没更新博客了,主要是最近公司接了个P2P的金融借贷项 ...
- 利用ViewPager+Fragment+actionbar实现可左右滑动的Action Tab
1. ViewPager要点: ViewPager 是一个布局管理类(layout manager),用于提供页面的左右滑动功能,类似于ListView,也有为ViewPager提供 数据(F ...
- android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常
我模仿别人的知乎日报,新闻列表页没问题,内容明细页(NewsDetail)用的是ViewPager+Fragment.可以左右滑动看左右的新闻的. 我的项目地址是链接描述 但是我在做顶部可折叠式标题栏 ...
- ViewPager+Fragment实现TabHost,Fragment动态添加、删除,Tab选项卡跟随滑动
效果图: 代码功能: (1)用ViewPager+Fragment实现TabHost,ViewPager的每一个Page均是Fragment.ViewPager中的Fragment可以动态添加.删除. ...
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)...
上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...
- 小牛的安卓笔记-----底部导航栏的实现以及用TabLayout+ViewPager+Fragment实现页面滑动切换
昨夜西风凋碧树,独上高楼,望尽天涯路. 今天难得有时间,准备写一写我们在APP中经常用到的页面形式,废话不多说,直接一张图看看页面效果你就知道为啥是常用的页面形式.先看看逻辑和最后的效果是怎么样的: ...
- 仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment
仿百度壁纸客户端(一)--主框架搭建,自定义Tab+ViewPager+Fragment 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment ...
- 安卓开发之使用viewpager+fragment实现滚动tab页
闲着.用viewpager+fragment实现了个滚动tab..轻拍,以后会陆续发先小东西出来..爱分享,才快乐.demo见附件.. Java代码 package com.example.dem ...
最新文章
- 如何才能做好绩效管理?
- VTK:Filtering之Delaunay2D
- 因为银行原因出现房贷逾期,怎么修复征信?
- 鸿蒙系统暗黑2,暗黑破坏神2为什么被称为神作!看看装备强化系统就知道有多完美...
- ubuntu 缺少php安装包,ubuntu 16.04 lts安装php环境和composer依赖包管理
- linux-文件的删除与创建
- mysql命令行导入dmp文件,oracle的备份文件(dmp)导入mysql数据库方法
- VirtualBox无法启动虚拟机的解决办法
- 安卓flash插件_安卓手机如何打开.swf文件 如何用手机播放swf文件
- js根据身份证号码计算年龄的方法
- 新冠疫情分析(疫情数据爬取+数据分析+网页排版展示)
- NTKO 文件在线编辑并保存 目前平台板plus支持 word excel ppt
- 【免费开放源码】审批类小程序项目实战(预约审批端)
- 聊天室程序python_Python聊天室程序(基础版)_python
- dataframe 设置空值_数据清洗--DataFrame中的空值处理方法
- 信号与系统--信号以及系统的介绍(一)
- linux 25端口漏洞,Linux通过栈溢出进行提权实战(dpwwn03)
- JAVA多线程技术-线程的生命周期
- eclipse java3d_Using Xj3D in your Java Application
- 广州住房公积金管理中心综合业务管理系统容灾项目(GZIT2010-ZB0103)招标公告...
热门文章
- [导入]七大千年数学难题
- C/C++ 编程中多国语言处理
- ubuntu12.04循环登录,无法进桌面的问题。
- L1-060 心理阴影面积 (5 分)-PAT 团体程序设计天梯赛 GPLT
- [Python] L1-031. 到底是不是太胖了-PAT团体程序设计天梯赛GPLT
- 蓝桥杯 ADV-69 算法提高 质因数
- 1114. Family Property (25)-PAT甲级真题(并查集)
- oracle自定义函数返回一个表,oracle 自定义函数 返回一个表类型
- java获取两个字符串日期之间间隔的天数
- 使用MediaCodec硬解码h.265视频及音频进行播放