Android框架之路——Tablayout+ViewPager+Fragment的使用
来源:互联网 发布:大连 知乎 编辑:程序博客网 时间:2024/06/01 08:47
1、参考博客:
- TabLayout、ViewPager和Fragment的多页面滑动
- 首页-底部&顶部Tab导航(菜单栏)的实现:TabLayout+ViewPager+Fragment
2、实现效果:
3、使用教程:
1. 导包,添加依赖
compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0'
2. 创建Fragment和布局文件
创建fragment1,fragment2,fragment3和fragment4及其布局文件。
fragment1.java
public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.layout_fragment1, container, false); }}
layout_fragment1.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"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="fragment1"/></LinearLayout>
3. 创建FragmentPagerAdapter子类管理Fragment
这里对其还是进行了优化,fragment只实例化一次。
public class PageAdapter extends FragmentPagerAdapter { private int num; private HashMap<Integer, Fragment> mFragmentHashMap = new HashMap<>(); public PageAdapter(FragmentManager fm, int num) { super(fm); this.num = num; } @Override public Fragment getItem(int position) { return createFragment(position); } @Override public int getCount() { return num; } private Fragment createFragment(int pos) { Fragment fragment = mFragmentHashMap.get(pos); if (fragment == null) { switch (pos) { case 0: fragment = new Fragment1(); Log.i("fragment", "fragment1"); break; case 1: fragment = new Fragment2(); Log.i("fragment", "fragment2"); break; case 2: fragment = new Fragment3(); Log.i("fragment", "fragment3"); break; case 3: fragment = new Fragment4(); Log.i("fragment", "fragment4"); break; } mFragmentHashMap.put(pos, fragment); } return fragment; }}
4. activity_main中添加
<android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="50dp"/><android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/>
5. MainActivity中实现
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout); //添加标签 tabLayout.addTab(tabLayout.newTab().setText("tab1")); tabLayout.addTab(tabLayout.newTab().setText("tab2")); tabLayout.addTab(tabLayout.newTab().setText("tab3")); tabLayout.addTab(tabLayout.newTab().setText("tab4")); //设置adapter,滑动时间 final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); viewPager.setAdapter(new PageAdapter(getSupportFragmentManager(), tabLayout.getTabCount())); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); //绑定tab点击事件 tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
6. Tab想要设置icon的话,可以继续用setIcon方法,如下:
tabLayout.addTab(tabLayout.newTab().setText("tab1").setIcon(R.drawable.ic_menu_camera));
个人公众号:每日推荐一篇技术博客,坚持每日进步一丢丢…欢迎关注,想建个微信群,主要讨论安卓和Java语言,一起打基础、用框架、学设计模式,菜鸡变菜鸟,菜鸟再起飞,愿意一起努力的话可以公众号留言,谢谢…
0 0
- Android框架之路——Tablayout+ViewPager+Fragment的使用
- TabLayout的简单使用(TabLayout+Fragment+ViewPager)
- Android Material Design系列之Tablayout,Fragment,Viewpager搭配使用
- Android 开发之 TabLayout + ViewPager 的使用
- Tablayout+ViewPager+Fragment(Android)
- Fragment+ViewPager+TabLayout 使用
- 整理TabLayout+ViewPager+Fragment的使用
- TabLayout+Fragment+ViewPager的标题滑动使用
- Android开发ViewPager的预加载和Fragment的销毁问题,以及tabLayout+ViewPager的使用
- TabLayout+Fragment+ViewPager联合使用
- ViewPager+Fragment+TabLayout联合使用
- TabLayout+ViewPager+Fragment联合使用
- TabLayout,ViewPager,Fragment结合使用
- TabLayout/ViewPager/Fragment结合使用
- android material design之Tablayout,Recyclerview,Fragment,Viewpager搭配使用(四)
- Android之TabLayout+ViewPager+Fragment实现标题栏与页面联动
- Android进阶之利用Tablayout+ViewPager+Fragment实现神奇的滑动效果
- Android开发丶使用懒加载修复tablayout+viewpager+fragment的预加载
- myeclipse中的错误
- Android Studio录制手机屏幕视频
- Spring注解@Component、@Repository、@Service、@Controller区别
- 自动化测试框架的比较
- nginx+memcached构建页面缓存应用
- Android框架之路——Tablayout+ViewPager+Fragment的使用
- 数独
- python中返回list下标的问题-没办法中找办法
- python_python中try except处理程序异常的三种常用方法
- FastDFS+nginx+fastdfs-nginx-module服务器配置
- codeforces 669C Little Artem and Matrix
- 协议监测工具
- IIC详解,包括原理、过程,最后一步步教你实现IIC
- kettle 7.0导数据hbase1.2.7 (测试)