ViewPager与android.support.design.widget.TabLayout双向交互联动切换

通常,android.support.design.widget.TabLayout与Android的ViewPager联合使用,实现与ViewPager的切换与联动。
(1)比如,当用户手指触摸选择TabLayout中的某一项时候,ViewPager应当自动切换跳转到相应的Page页面;
(2)同样,当用户在翻动ViewPager时候,TabLayout也会自动的滚动到与当前ViewPager页面像对应的子item tab并使该子item tab处于选中状态。

测试用的主Activity MainActivity.java :

 1 package com.zzw.testtablayout;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.design.widget.TabLayout;
 6 import android.support.v4.view.PagerAdapter;
 7 import android.support.v4.view.ViewPager;
 8 import android.view.Gravity;
 9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.widget.TextView;
12
13 public class MainActivity extends Activity {
14
15     private final int COUNT = 10;
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21
22         TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
23
24         tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
25
26         ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
27         viewPager.setAdapter(new MyAdapter(this));
28
29         // TabLayout和ViewPager双向、交互联动。
30         tabLayout.setupWithViewPager(viewPager);
31     }
32
33     private class MyAdapter extends PagerAdapter {
34         private Activity activity;
35
36         public MyAdapter(Activity activity) {
37             this.activity = activity;
38         }
39
40         @Override
41         public CharSequence getPageTitle(int position) {
42
43             return "选项" + position;
44         }
45
46         @Override
47         public Object instantiateItem(View container, int position) {
48             TextView tv = new TextView(activity);
49             tv.setText("ViewPager" + position);
50             tv.setTextSize(30.0f);
51             tv.setGravity(Gravity.CENTER);
52
53             ((ViewGroup) container).addView(tv);
54             return tv;
55         }
56
57         @Override
58         public void destroyItem(View container, int position, Object object) {
59             ((ViewPager) container).removeView((View) object);
60
61         }
62
63         @Override
64         public int getCount() {
65             return COUNT;
66         }
67
68         @Override
69         public boolean isViewFromObject(View arg0, Object arg1) {
70             return arg0 == arg1;
71         }
72
73     }
74 }

MainActivity.java需要的布局文件:activity_main.xml:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 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:tabIndicatorColor 指示器(字体下面的那一个横)显示颜色 -->
 9     <!-- app:tabSelectedTextColor 选中的字体颜色 -->
10     <!-- app:tabTextColor 未选中的字体颜色 -->
11
12     <android.support.design.widget.TabLayout
13         android:id="@+id/tabLayout"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         app:tabIndicatorColor="#26c6da"
17         app:tabSelectedTextColor="#f44336"
18         app:tabTextColor="#bdbdbd" />
19
20     <android.support.v4.view.ViewPager
21         android:id="@+id/viewPager"
22         android:layout_weight="1"
23         android:layout_width="match_parent"
24         android:layout_height="wrap_content" />
25
26 </LinearLayout>
时间: 2024-10-13 15:56:11

ViewPager与android.support.design.widget.TabLayout双向交互联动切换的相关文章

Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.TabLayout,TableLayout引起页面崩溃

在使用TableLayout的时候,运行引用程序直接Crash. FATAL EXCEPTION: main Process: com.edaixi.activity, PID: 9703 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.edaixi.activity/com.edaixi.activity.PriceCenterActivity}: android.view.InflateExcept

android.support.design.widget.AppBarLayout 在android5.0+底部显示空白条问题

在最外层使用 RelativeLayout作为根节点,同时设置 android:fitsSystemWindows="true"问题解决. <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://

Android Support Design Library 之 TabLayout

在 Android 3.0 的时候 ,我们知道可以通过 ActionBar 来创建 tab 实现导航,但是呢,不容易自定义 ,而且现在 ActionBar 被 Toolbar 取代的话,这让很多应用都抛弃了这个 ActionBar 的 tab,选择自己来写一个 tab.不过在 support v4 包中,有个PagerTitleStrip   和 PagerTabStrip,我觉得很丢脸,为何有这么丑的控件出现 ?于是在应用中我们还是选择了自己写一个 tab.今天,在 Android Desig

高逼格UI-ASD(Android Support Design)

绪 今年的Google IO给我们android开发着带来了三样很屌很屌的library: ASD(Android Support Design) APL(Android Percent Layout) DBL(Data Binding Library) 这三个库都是很屌很屌的库,第一个可以让我们在低版本的Android上使用Material Design,第二个是为了更好的适配,提供了基于百分比的Layout;至于第三个,能让Activity更好负责MVC中C的职责,让我们开发者更少的去fin

在Android2.3.3即minSdkVersion 10上使用android.support.v4.widget.SwipeRefreshLayout和android.support.design

由于新的项目需要支持2.3.3版本的Android机型,额,2.3.3左右的已经份额非常非常小了, 还需要支持,真蛋疼. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/re

Android Support Design Library之TextInputLayout

相信普通的用户在使用手机的时候经常遇到一个输入框没输入的时候会有灰色的提示,可一旦输入些许字符后,用户很快忘记了这个输入框要输入什么,但是退回去却又要重新输入,对于用户的这个要求,谷歌看在眼里,在2015推出了TextInputLayout来满足这个需求.那么对于怎么使用这个控件,我将用模仿网易邮箱大师的登录界面来一一告诉大家怎么畅快的玩起来. 下面来看看,我们将要实现的界面. 1.TextInputLayout在布局里面的那些事 对于TextInputLayout并不能单独的使用,必须配合Ed

Android Support Design Library之NavigationView

此安卓支持库中需要讲解的第二个View就是NavigationView,相信大家在开发中经常会用到抽屉,那么谷歌也为大家提供了这个功能,并不需要去Github去下载使用开源的软件.NavigationView基本满足日常开发抽屉的所有要求,且效率也高.下面我们看下效果图后,将详细介绍其使用方式. 1.NavigationView与DrawerLayout的天作之合 NavigationView完整包名+类名如下:android.support.design.widget.NavigationVi

Android Support Design练手[DrawerLayout、CoordinatorLayout、CollapsingToolbarLayout...]

先po一张效果图 PS:原谅题主的懒惰吧.. 看着是不是很酷炫,那是因为5.0的动画做得好,代码其实没有多少,搞清楚这个布局的层次关系很重要. 废话不多说了,先来看布局文件 最外层是一个DrawerLayout,它里面可以嵌套(一个?)container和多个drawer 在这个demo中DrawerLayout包含了一个CoordinatorLayout , ListView , NavigationView CoordinatorLayout  作为 container的根布局 listVi

Android Support Design Library之FloatingActionButton

为了文章的精彩,前三个标题实现FloatingActionButton的特效,最后一节讲解其属性详情. 1.自定义Behavior实现掌阅底部菜单与按钮联动效果. 我们来看看掌阅的菜单效果: 以前没有这个支持库的时候,需要写两个动画,一个按钮的动画一个菜单的动画,现在因为有了Behavior,那么一个在另一个的相对位置就可以实现其效果. 另外标记一下这个库最重要的知识点就是Behavior,其他的与基本控件无异.下面我们来实现其效果. 自定义Behavior代码: public class LY