Android学习笔记--TabLayout的简单使用

我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合。达到很漂亮的效果。但是TabPageIndicator是第三方的,而且比较老了,当然了现在很多大神都已经开始自己写TabPageIndicator来满足自己的需求,在2015年的google大会上,google发布了新的Android Support Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容到2.2以上版本,包括2.2。下面我就举一个简单的例子来使用它

fragment_item.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     android:orientation="vertical"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent">
 7
 8     <!--app:tabMode - fixed: 固定tab的位置,当tab数量过多时,超出屏幕范围后。无法显示更多。
 9                scrollable: tab数量超出屏幕范围,可以滚动tab,显示更多的tab-->
10     <!-- app:tabTextAppearance="@style/design_widget_TabLayout_TextStyle"-->
11     <!-- app:tabIndicatorColor="@color/white"                 // 下方滚动的下划线颜色-->
12     <!--app:tabSelectedTextColor="@color/gray"               // tab被选中后,文字的颜色-->
13     <!--app:tabTextColor="@color/white"                      // tab默认的文字颜色-->
14     <android.support.design.widget.TabLayout
15         android:id="@+id/tab_find_fragment_title"
16         android:layout_width="match_parent" android:layout_height="35dp"
17         android:background="#e4e4e4"
18         app:tabIndicatorColor="?attr/colorPrimary"
19         app:tabSelectedTextColor="?attr/colorPrimary"
20         app:tabTextColor="@android:color/black" app:tabGravity="fill"
21         android:fillViewport="false" />
22     <!--app:tabMode="scrollable"-->
23
24     <android.support.v4.view.ViewPager
25         android:id="@+id/tab_find_fragment_find_fragment"
26         android:layout_width="match_parent"
27         android:layout_height="match_parent"/>
28
29 </LinearLayout>
FindAdapter.java
 1 package com.wuxianedu.ademo;
 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  * Created by Administrator on 2016/10/18.
11  * 这个Adapter我也不知道是怎么回事,但是还是要照着写出出来。。。
12  */
13
14 public class FindAdapter extends FragmentPagerAdapter {
15     //这是标题的  第一个就显示第一个
16     private List<String> titleList;
17     //这个是fragmen,把集合中的fragmen都展示出来
18     private List<Fragment> fragmentList;
19
20     public FindAdapter(FragmentManager fm, List<String> titleList, List<Fragment> fragmentList) {
21         super(fm);
22         this.titleList = titleList;
23         this.fragmentList = fragmentList;
24     }
25
26     @Override
27     public android.support.v4.app.Fragment getItem(int position) {
28         return fragmentList.get(position);
29     }
30
31     @Override
32     public int getCount() {
33         return titleList.size();
34     }
35     /**
36      * 获取标题
37      * @param position
38      * @return
39      */
40     @Override
41     public CharSequence getPageTitle(int position) {
42         return titleList.get(position);
43     }
44 }
FindAFragment.java
 1 package com.wuxianedu.ademo;
 2
 3 import android.os.Bundle;
 4 import android.support.annotation.Nullable;
 5 import android.support.design.widget.TabLayout;
 6 import android.support.v4.app.Fragment;
 7 import android.support.v4.view.ViewPager;
 8 import android.view.LayoutInflater;
 9 import android.view.View;
10 import android.view.ViewGroup;
11
12 import java.util.ArrayList;
13 import java.util.List;
14
15 /**
16  * Created by Administrator on 2016/10/18.
17  */
18 public class FindAFragment extends Fragment {
19
20
21     @Nullable
22     @Override
23     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
24         View view = inflater.inflate(R.layout.fragment_item,null);
25         return view;
26     }
27
28     @Override
29     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
30         TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_find_fragment_title);
31         ViewPager viewPager = (ViewPager) view.findViewById(R.id.tab_find_fragment_find_fragment);
32         List<String> titellist = new ArrayList<>();
33         titellist.add("推举项目");
34         titellist.add("热门项目");
35         titellist.add("最近更新");
36         List<Fragment> fragme ntList = new ArrayList<>();
37         fragmentList.add(new OneFragment());//这里写你自己Fragment的名字 我是三个,
38         fragmentList.add(new TwoFragment());
39         fragmentList.add(new OneFragment());
40         tabLayout.setTabMode(TabLayout.MODE_FIXED);
41         FindAAdapter findAAdapter = new FindAAdapter(getActivity().getSupportFragmentManager(),titellist,fragmentList);
42         viewPager.setAdapter(findAAdapter);
43         tabLayout.setupWithViewPager(viewPager);
44         super.onViewCreated(view, savedInstanceState);
45     }
46 }
MainActivity.java
 1 package com.wuxianedu.ademo;
 2
 3 import android.support.v4.app.FragmentPagerAdapter;
 4 import android.support.v4.app.FragmentTransaction;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7
 8 public class MainActivity extends AppCompatActivity {
 9
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14         //往Fragment添加东西
15         FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
16         //往Fragment添加东西
17         fragmentTransaction.add(R.id.frame_id,new FindFragment());
18         //往Fragment添加东西
19         fragmentTransaction.commit();
20     }
21 }

OnFragmetn.java  1 package com.wuxianedu.ademo;

 2
 3 import android.os.Bundle;
 4 import android.support.annotation.Nullable;
 5 import android.support.v4.app.Fragment;
 6 import android.support.v4.view.ViewPager;
 7 import android.view.LayoutInflater;
 8 import android.view.View;
 9 import android.view.ViewGroup;
10 import android.widget.TableLayout;
11 import android.widget.TextView;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 /**
17  * Created by terry-song on 2016/10/18.
18  */
19
20 public class OneFragment extends Fragment {
21
22     @Nullable
23     @Override
24     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
25         View view = inflater.inflate(R.layout.fragment_test,null);
26         return view;
27     }
28
29     @Override
30     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
31         TextView textView = (TextView) view.findViewById(R.id.tv_show_id);
32         textView.setText("第1个页面");
33         super.onViewCreated(view, savedInstanceState);
34     }
35 }
其他
两个也一样,

时间: 2024-10-25 23:04:32

Android学习笔记--TabLayout的简单使用的相关文章

Android学习笔记:ListView简单实用--显示文字列表

在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例子,所以固定写死 items.add("item1"); items.add("item2"); items.add("item3"); ListView listView = (ListView) findViewById(R.id.listVie

Android学习笔记——创建一个简单的上下文菜单ContextMenu

例子目标: 在一个显示出来的内容区域内,触摸屏幕显示一个上下文菜单,并且实现监听,当选择菜单项的时候,获得用户选择的项的内容. 实现原理: 1.向内容Activity中的需要显示上下文菜单的内容区域注册上下文菜单响应 2.设计上下文菜单样式 3.在Activity中实现上下文菜单的方法 代码: 上下文菜单的XML内容 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="ht

Android学习笔记(二十):回归简单的ListView

在之前连续对ListVew作了逐步深入的探讨,对于手持屏幕来讲,其实可以比较简单,如果别人愿意付钱,不在乎将代码再些一次,这是客户端的开发和复杂服务器的开发不同的地方.当然各人有各人的看法.绝大部分情况下,一个list元素可能左右各有一个widget就差不多,回归简约风格,这也是小尺寸屏幕和手指操作的特点. 在数据的传递,Java里面,具有<Key,Value>的Hash是非常重要的,可以方便增/删/改/查,如果我们不使用数据库存储,或者将数据存放在内存中,<Key,Value>是

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供.我们将相关信息存储在一个intent中,例如该文本的Uri.这个intent可以匹配系统的多个应用,替代菜单将这些应用一一列出,菜单项的title就是该可被调用的activity的名字,图标也为该可被调用的activity的图表. 小例子说明 我们通过一个小例子进行学习,简单地打开一个URL:we

Android学习笔记(二二): 多页显示-Tag的使用

在手机屏幕中,Tab也是比较常用的,通常和List结合,例如我们手机的通信录.下面是Tag的结构. TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout.TabWidget就是每个tab的标签,FrameLayout则是tab内容. 如果我们使用extends TabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost TabWidget必须设置android:id为@android:id/tabs F

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

Pro Android学习笔记(二九):用户界面和控制(17):include和merge

xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android"     androi

Pro Android学习笔记(十):了解Intent(上)

Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Service(后台代码) 3.Broadcast receiver(处理广播消息的代码) 4.Content provider(抽象数据的代码) Intent基本含义 intent是通知平台处理(唤起)的动作.Android唤起的动作将取决于注册了什么动作.例如我们有个简单的Activity:IntentBaiscViewActivity.在AndroidManife

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri