TabLayout和ViewPager以及Fragment实现超级简单导航栏
来源:互联网 发布:楼体亮化设计软件 编辑:程序博客网 时间:2024/05/17 03:04
导航栏在项目中用到的很多,今天我们就来看看最简单的方式实现,这里我们用到了Design包下面的一个非常强大的类:TabLayout,先来看看那效果图:
布局文件main_activity.xml:
<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" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" android:background="@color/colorPrimary_pink" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_below="@+id/tablayout" > </android.support.v4.view.ViewPager></RelativeLayout>到重点了,关键看我们的MainActivity,我们先来看看一般的方式:
package com.dice.md_13_tablayout;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;public class MainActivity extends FragmentActivity {private TabLayout tablayout;private String[] items_1 = new String[]{"item_1","item_2","item_3","item_4","item_5","item_6","item_7","item_8"};private String[] items_2 = new String[]{"item_1","item_2","item_3"};private ViewPager mViewPager;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Adapter mAdapter = new Adapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setAdapter(mAdapter); tablayout = (TabLayout) findViewById(R.id.tablayout); // 1.1 关联 TabLyout 和 ViewPager 作用:为TabLayout 设置title tablayout.setTabsFromPagerAdapter(mAdapter); // 1.2 关联 TabLyout 和 ViewPager 作用: 滑动ViewPager TabLayout自动切换 协调切换 mViewPager.setOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout)); // 1.3 点击TabLayout 切换ViewPager tablayout.setOnTabSelectedListener(new OnTabSelectedListener() {@Overridepublic void onTabUnselected(Tab arg0) {// TODO Auto-generated method stub}@Overridepublic void onTabSelected(Tab tab) {mViewPager.setCurrentItem(tab.getPosition());}@Overridepublic void onTabReselected(Tab arg0) {// TODO Auto-generated method stub}}); // 然而 上面的 1.1、1.2、1.3 这里一句话搞定 //tablayout.setupWithViewPager(mViewPager); } // 这个Adapter 是必须 public class Adapter extends FragmentPagerAdapter{public Adapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {// TODO Auto-generated method stubMyFragment fragment = new MyFragment();Bundle bundle = new Bundle();bundle.putString("title", items_1[position]);fragment.setArguments(bundle);return fragment;}@Overridepublic CharSequence getPageTitle(int position) {return items_1[position];}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn items_1.length;} }}改进之后:
package com.dice.md_13_tablayout;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;public class MainActivity extends FragmentActivity {private TabLayout tablayout;private String[] items_1 = new String[]{"item_1","item_2","item_3","item_4","item_5","item_6","item_7","item_8"};private String[] items_2 = new String[]{"item_1","item_2","item_3"};private ViewPager mViewPager;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Adapter mAdapter = new Adapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setAdapter(mAdapter); tablayout = (TabLayout) findViewById(R.id.tablayout); // 然而 上面的 1.1、1.2、1.3 这里一句话搞定 tablayout.setupWithViewPager(mViewPager); } // 这个Adapter 是必须 public class Adapter extends FragmentPagerAdapter{public Adapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {// TODO Auto-generated method stubMyFragment fragment = new MyFragment();Bundle bundle = new Bundle();bundle.putString("title", items_1[position]);fragment.setArguments(bundle);return fragment;}@Overridepublic CharSequence getPageTitle(int position) {return items_1[position];}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn items_1.length;} }}是不是超级简单呢?
0 0
- TabLayout和ViewPager以及Fragment实现超级简单导航栏
- Tablayout+viewpager+fragment实现tab导航以及滑动切换
- TabLayout+ViewPager+Fragment实现顶部或底部导航栏
- Tablayout + ViewPager + fragment 实现底部或顶部导航栏
- Android 用 TabLayout + ViewPager + Fragment 实现顶部、底部导航栏
- 结合TabLayout 、ViewPager 、 Fragment 实现顶部导航栏,最实用!!!
- Android中导航栏实现(Fragment+ViewPager+TabLayout)
- TabLayout+ViewPager+Fragment实现底部导航
- TabLayout+ViewPager+Fragment实现底部导航
- TabLayout+ViewPager+Fragment实现带图标和文字的底部导航栏
- xamarin Tablayout+Viewpager+Fragment顶部导航栏
- 超简单的ViewPager导航栏联动实现--TabLayout
- 简单优雅的使用tablayout和viewpager打造导航栏
- Tablayout 底部导航的实现 (TabLayout 以及ViewPager联动)
- Fragment和ViewPager实现底部导航栏
- TabLayout 实现ViewPager+fragment
- ViewPager 和 TabLayout实现Fragment分页
- ViewPager 、TabLayout和Fragment实现标签滑动
- Java Socket之URL(一)
- C++内存分布之虚函数和虚表
- 开源流媒体云视频平台EasyDarwin中EasyCMS服务是如何进行命令转发和消息路由的
- 华为OJ 初级:自首数
- SIM卡运营商信息整理
- TabLayout和ViewPager以及Fragment实现超级简单导航栏
- 使用SparkSQL分析CSDN泄露的用户数据[top-n]
- Android中JNI使用详解(2)---Android Studio中NDK环境配置
- Android 2016的一些新东西
- stagefright框架下的awesomeplayer播放准备阶段
- 洛谷 P1330 封锁阳光大学
- u3d honey hex framework 代码解读记录(二)
- Spring05
- Spring学习笔记