浅谈TabLayout(ViewPager+Tab联动)

简介: google发布了的Android Support Design库中提供了TabLayout   通过TabLayout+ViewPager实现导航栏效果,点击Tab ,ViewPager跟随变化,滑动ViewPager,Tab跟随变化 看效果图: 通过一个Demo来了解TabLayout的简单使用(Android Studio开发),代码中都有注释了 ,很简单 1、build.

google发布了的Android Support Design库中提供了TabLayout

 

通过TabLayout+ViewPager实现导航栏效果,点击Tab ,ViewPager跟随变化,滑动ViewPager,Tab跟随变化

看效果图:

通过一个Demo来了解TabLayout的简单使用(Android Studio开发),代码中都有注释了 ,很简单

1、build.gradle文件中加入

compile 'com.android.support:design:22.2.0'

 

2、写Xml文件,注意TabLayout的三个属性

app:tabIndicatorColor="#0f0"                每个tab下方的下划线的颜色    
app:tabSelectedTextColor="#00f"             被选中的tab的文本颜色
app:tabTextColor="#f00"                     未被选中的tab的文本颜色
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity">
 7 
 8     <android.support.design.widget.TabLayout
 9         android:id="@+id/tablayout"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:background="#777"
13         app:tabIndicatorColor="#0f0"
14         app:tabSelectedTextColor="#00f"
15         app:tabTextColor="#f00"
16         />
17 
18 
19     <android.support.v4.view.ViewPager
20         android:id="@+id/viewpager"
21         android:layout_width="fill_parent"
22         android:layout_height="0dp"
23         android:layout_weight="1"
24         android:background="#cccc"
25         />
26 
27 </LinearLayout>
activity_main.xml

 

3、创建4个fragment

这里只创建一个,其他三个类似

 1 package com.xqx.com.tablayoutdemo;
 2 
 3 
 4 import android.os.Bundle;
 5 import android.support.v4.app.Fragment;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 
10 
11 /**
12  * A simple {@link Fragment} subclass.
13  */
14 public class OneFragment extends Fragment {
15 
16 
17     public OneFragment() {
18         // Required empty public constructor
19     }
20 
21 
22     @Override
23     public View onCreateView(LayoutInflater inflater, ViewGroup container,
24                              Bundle savedInstanceState) {
25         // Inflate the layout for this fragment
26         return inflater.inflate(R.layout.fragment_one, container, false);
27     }
28 
29 
30 }
OneFragment
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.xqx.com.tablayoutdemo.OneFragment">
 7 
 8     <!-- TODO: Update blank fragment layout -->
 9     <TextView android:layout_width="match_parent"
10         android:layout_height="match_parent"
11         android:layout_gravity="center"
12         android:gravity="center"
13         android:text="第一个fragment界面" />
14 
15 </LinearLayout>
fragment_one

 

4、创建ViewPager的适配器

 1 package com.xqx.com.tablayoutdemo;
 2 
 3 import android.support.v4.app.Fragment;
 4 import android.support.v4.app.FragmentManager;
 5 import android.support.v4.app.FragmentPagerAdapter;
 6 
 7 import java.util.List;
 8 
 9 
10 public class MyAdapter extends FragmentPagerAdapter{
11 
12     private List<Fragment> fragments;           //fragment集合
13     private List<String> titles;                //tab标题集合
14 
15     public MyAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles) {
16         super(fm);
17         this.fragments = fragments;
18         this.titles = titles;
19     }
20 
21     @Override
22     public Fragment getItem(int position) {
23         return fragments.get(position);
24     }
25 
26     @Override
27     public int getCount() {
28         int ret = 0;
29         if (fragments!=null && fragments.size()!=0){
30             ret = fragments.size();
31         }
32         return ret;
33     }
34 
35     @Override
36     public CharSequence getPageTitle(int position) {
37         return titles.get(position);
38     }
39 
40 
41 }
MyAdapter.java

 

5、MainActivity.java

 1 package com.xqx.com.tablayoutdemo;
 2 
 3 import android.support.design.widget.TabLayout;
 4 
 5 import android.support.v4.app.Fragment;
 6 import android.support.v4.app.FragmentActivity;
 7 import android.support.v4.view.ViewPager;
 8 import android.os.Bundle;
 9 
10 import java.util.ArrayList;
11 import java.util.List;
12 
13 public class MainActivity extends FragmentActivity {
14 
15     private TabLayout tabLayout;
16     private ViewPager viewPager;
17 
18     //四个fragment
19     private OneFragment oneFragment;
20     private TwoFragment twoFragment;
21     private ThreeFragment threeFragment;
22     private FourFragment fourFragment;
23 
24     //适配器
25     private MyAdapter adapter;
26 
27     private List<Fragment> fragments;           //fragment集合
28     private List<String> titles;                //tab标题集合
29     @Override
30     protected void onCreate(Bundle savedInstanceState) {
31         super.onCreate(savedInstanceState);
32         setContentView(R.layout.activity_main);
33 
34         tabLayout = (TabLayout) findViewById(R.id.tablayout);
35         viewPager = (ViewPager) findViewById(R.id.viewpager);
36 
37         //创建四个Fragment对象
38         oneFragment = new OneFragment();
39         twoFragment = new TwoFragment();
40         threeFragment = new ThreeFragment();
41         fourFragment = new FourFragment();
42 
43         //将四个Fragment对象添加到集合中
44         fragments = new ArrayList<>();
45         fragments.add(oneFragment);
46         fragments.add(twoFragment);
47         fragments.add(threeFragment);
48         fragments.add(fourFragment);
49 
50         //给Tab添加标题
51         titles = new ArrayList<>();
52         titles.add("one");
53         titles.add("two");
54         titles.add("three");
55         titles.add("four");
56 
57         //创建适配器
58         adapter = new MyAdapter(getSupportFragmentManager(),fragments,titles);
59         //viewpager绑定适配器
60         viewPager.setAdapter(adapter);
61         //tabLayout绑定viewpager
62         tabLayout.setupWithViewPager(viewPager);
63 
64     }
65 
66 }
MainActivity.java

 

-------------------------------------------------------------------------------------------------

其他相关:

浅谈FloatingActionButton(悬浮按钮)

浅谈DrawerLayout(抽屉效果)

浅谈GridLayout(网格布局)

浅谈RecyclerView(完美替代ListView,GridView)

相关文章
|
存储 Android开发
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
android ViewPager + Fragment + Tablayout 实现嵌套页面导航
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
|
编译器 Android开发 容器
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(一)
android ViewPager + Fragment + Tablayout 实现嵌套页面导航
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(一)
|
Android开发
Android TabLayout 加 ViewPager实现选项卡切换功能
今天讲一个很简单的功能,就是可以切换的选项卡功能,很多app都有类似这种效果,实现的方法也有很多,这里我采用TabLayout加上ViewPager来实现,这里我做了一个封装,相当于一个工具类来着,哪个地方需要用到都可以使用,使用上我的那个封装类就可以了。
244 0
Android TabLayout 加 ViewPager实现选项卡切换功能
|
Android开发
Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
|
XML Android开发 数据格式
Android--FragmentTabHost+ViewPager+Fragment实现底部tab菜单栏
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79001632 activity_main.
1227 0
|
XML Android开发 数据格式
xamarin Tablayout+Viewpager+Fragment顶部导航栏
最近几天不忙,所以把项目中的顶部导航栏的实现归集一下。android中使用TabLayout+ViewPager+Fragment制作顶部导航非常常见,代码实现也比较简单。当然我这个导航栏是基于xamarin android的。
2177 0
|
Java Android开发
ViewPager通过自定义适配器MyPagerAdapter实现界面导航(上标题)
ViewPager ViewPager的使用技巧其实有很多,这里只是我个人 平时学习得到的经验,希望对大家有所帮助,如有不对还请见谅。 很乐意接纳大家的意见与建议,本人邮箱: 893239524@qq.com
6724 0
|
Java Android开发 容器
TableLayout和Viewpager实现切换
因为我是在之前的基础上写的,所以这个TableLayout和Viewpager实际上是写在Fragment上的。要写到Activity里其实也是一样的啦。 先看效果图,原谅我不会动态图,只能截个图啦 布局文件 app:tabIndicatorcolor意思是选中的导航条的颜色。 app:tabSelectesTextColor是选中的导航条的文字
2200 0