ViewPager,使用Fragment实现
效果如图:
使用Fragment实现tab的缺点就是不能够滑动。不过应该也算优点,具体场景可以自由选择。
完整代码:imooc-tab022fragment,在我的百度云网盘上。
MainAcgtivity.java
1 package com.example.imooc_tab02; 2 3 import android.os.Bundle; 4 import android.support.v4.app.FragmentActivity; 5 import android.support.v4.app.FragmentManager; 6 import android.support.v4.app.FragmentTransaction; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.ImageButton; 10 import android.widget.LinearLayout; 11 12 public class MainActivity extends FragmentActivity implements OnClickListener { 13 // tabs 14 LinearLayout tab_weixin, tab_frd, tab_addr, tab_settings; 15 // ImageButton 16 ImageButton btn_weixin, btn_py, btn_txl, btn_sz; 17 18 tab01 t1; 19 tab02 t2; 20 tab03 t3; 21 tab04 t4; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.main); 27 t1 = new tab01(); 28 t2 = new tab02(); 29 t3 = new tab03(); 30 t4 = new tab04(); 31 initView(); 32 initEvents(); 33 34 /* 35 * 把tab添加到FrameLayout中,transaction的前一个参数是FrameLayout 36 * 的id,第二个参数是Fragment的继承类的实例对象 37 */ 38 // transaction.add(R.id.id_fragment, t1); 39 40 } 41 42 private void initEvents() { 43 tab_weixin.setOnClickListener(this); 44 tab_frd.setOnClickListener(this); 45 tab_addr.setOnClickListener(this); 46 tab_settings.setOnClickListener(this); 47 tab_addr.callOnClick();//设置通讯录为默认点击, 48 } 49 50 private void initView() { 51 // TODO Auto-generated method stub 52 tab_weixin = (LinearLayout) findViewById(R.id.id_tab_weixin2); 53 // tab_frd,tab_addr,tab_settings 54 tab_frd = (LinearLayout) findViewById(R.id.id_tab_frd2); 55 tab_addr = (LinearLayout) findViewById(R.id.id_tab_address2); 56 tab_settings = (LinearLayout) findViewById(R.id.id_tab_settings2); 57 58 // btn_weixin,btn_py,btn_txl,btn_sz; 59 btn_weixin = (ImageButton) findViewById(R.id.id_imgbtn_wx); 60 btn_py = (ImageButton) findViewById(R.id.id_imgbtn_py); 61 btn_txl = (ImageButton) findViewById(R.id.id_imgbtn_txl); 62 btn_sz = (ImageButton) findViewById(R.id.id_imgbtn_sz); 63 } 64 65 @Override 66 public void onClick(View v) { 67 // TODO Auto-generated method stub 68 FragmentManager manager = getSupportFragmentManager(); 69 FragmentTransaction transaction = manager.beginTransaction(); 70 hideFragment(transaction); 71 switch (v.getId()) { 72 case R.id.id_tab_weixin2: 73 resetImg(); 74 if(!t1.isAdded()){ 75 //如果fragment对象t1没有被添加,那么就添加并显示 76 transaction.add(R.id.id_fragment, t1); 77 } 78 transaction.show(t1); 79 btn_weixin.setImageResource(R.drawable.tab_weixin_pressed); 80 break; 81 case R.id.id_tab_frd2: 82 resetImg(); 83 if (!t2.isAdded()) { 84 transaction.add(R.id.id_fragment, t2); 85 } 86 transaction.show(t2); 87 btn_py.setImageResource(R.drawable.tab_find_frd_pressed); 88 break; 89 case R.id.id_tab_address2: 90 resetImg(); 91 if (!t3.isAdded()) { 92 transaction.add(R.id.id_fragment, t3); 93 } 94 transaction.show(t3); 95 btn_txl.setImageResource(R.drawable.tab_address_pressed); 96 break; 97 case R.id.id_tab_settings2: 98 resetImg(); 99 if (!t4.isAdded()) { 100 transaction.add(R.id.id_fragment, t4); 101 } 102 transaction.show(t4); 103 btn_sz.setImageResource(R.drawable.tab_settings_pressed); 104 break; 105 106 default: 107 break; 108 } 109 transaction.commit(); 110 } 111 112 private void hideFragment(FragmentTransaction transaction) { 113 System.out.println("====开始hideFragment()...===="); 114 // TODO Auto-generated method stub 115 if (t1 != null) { 116 System.out.println("hide(t1)..."); 117 transaction.hide(t1); 118 } 119 if (t2 != null) { 120 System.out.println("hide(t2)..."); 121 transaction.hide(t2); 122 } 123 if (t3 != null) { 124 System.out.println("hide(t3)..."); 125 transaction.hide(t3); 126 } 127 if (t4 != null) { 128 System.out.println("hide(t4)..."); 129 transaction.hide(t4); 130 } 131 } 132 133 // 重置按钮为灰色的 134 public void resetImg() { 135 btn_weixin.setImageResource(R.drawable.tab_weixin_normal); 136 btn_py.setImageResource(R.drawable.tab_find_frd_normal); 137 btn_txl.setImageResource(R.drawable.tab_address_normal); 138 btn_sz.setImageResource(R.drawable.tab_settings_normal); 139 } 140 }
转载于:https://www.cnblogs.com/Sunnor/p/4899434.html
ViewPager,使用Fragment实现相关推荐
- android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)
之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...
- Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)
前段日子的博客有介绍过关于ViewPager的使用,发现大家对那篇博客都情有独钟,今天我们就在来看一下ViewPager在Fragment中的使用吧,因为ViewPager是在补丁包中添加的低版本的包 ...
- ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响
首先,我们创建一个Activity和一个Fragment,并在Fragment的各个生命周期打好日志,并把Fragments丢进Viewpager,这里我们往Viewpager里丢了3个Fragmen ...
- Android ViewPager和Fragment实现顶部导航界面滑动效果
在项目中,我们常常需要实现界面滑动切换的效果.例如,微信界面的左右滑动切换效果.那这种效果是怎么实现的?今天我就带大家简单了解ViewPager,并通过实例来实现该效果. 一. ViewPager 官 ...
- 关于Android ViewPager 与 Fragment 一起使用碰到的问题
2019独角兽企业重金招聘Python工程师标准>>> 这是我前段时间遇到的两个问题,情况是这样的:第一个问题:由于公司的 app 层级比较多,所以用了一个翻页的功能.在具体翻到某一 ...
- android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
网上有很多Fragment生命周期的帖子,但是看了一下,没有找到自己想了解的东西,于是决定自己动手体验一下这个生命周期.主要想了解以下几个问题: Activity中的Fragment的生命周期 Vie ...
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可以 ...
- android滑动fragment,android中ViewPager结合Fragment进行无限滑动
实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; im ...
- ViewPager、Fragment和TabLayout实现切页效果
文章目录 ViewPager.Fragment和TabLayout实现切页效果 ViewPager.Fragment和TabLayout实现切页效果 不会上传动图,心里哭唧唧.但是是完整代码!新建一个 ...
- ViewPager切换Fragment生命周期变化
很久没有写博客了,今天学习了MD的TabLayout ,使用到了ViewPager,于是对于很久以来的一个疑问:ViewPager切换Fragment生命周期是如何变化的进行了一个测试. 本文研究了: ...
最新文章
- 如何选择视觉CV光源颜色
- MaskGAN:谷歌大脑让AI学做完形填空的新尝试
- MICROSOFT SQLSERVER 总结
- 两段用来启动/重启Linux下Tomcat的Perl脚本
- Python计算本周是第几周
- java中this.value_java中关键字this的用法
- SpringMVC中JSP取不到ModelAndView的数据原因
- html全屏播放一段视频,显示HTML5视频全屏(Show HTML5 Video Fullscreen)
- 实现机器学习的循序渐进指南VIII——线性回归
- logstash filter 处理json数据按原始数据字段数据存储
- PostgreSQL参数学习:random_page_cost
- 常用路由器的帐号和密码大全
- HMC5883L 转换方向角与简易校准方法
- 2021-2027全球与中国硅胶注塑机市场现状及未来发展趋势
- 淘宝用户api 如何获得App Key和API Secret
- 渗透测试人员常用的8种火狐插件
- 【蓝桥杯】有理数的循环节
- 全国计算机一级第七套试题及答案,计算机一级考试第七套试卷及答案.doc
- 水利专业学计算机吗,大学哪些专业最易被误解?计算机专业居榜首,水利学生气到不行!...
- idea创建maven工程没有src文件夹,或者是maven文件结构不能完整创建,可能是因为你的网速问题
热门文章
- 瑞友客户端无法建立跟远程计算机的连接,瑞友天翼终端错误信息的原因以及解决方法大全.doc...
- 为什么需要建设者模式
- Windows核心编程_inlineHook
- .com才是顶级域名,baidu.com是二级域名
- 楔和的基本群|Seifert-Van Kampen定理的简单应用
- JVM飙高排查脚本-结构分析
- 为什么 Oracle 应该主推 NetBeans
- 【JVM】上帝视角看JVM内存模型,分而治之论各模块详情
- java:通过Calendar类正确计算两日期之间的间隔
- python argparse(参数解析)模块学习(二)