ViewPager+PagerTabStrip实现Tab效果:(ViewPager默认滑动导航条效果)

public class PagerTabStrip extends PagerTitleStrip

java.lang.Object
    ↳ android.view.View
        ↳android.view.ViewGroup
            ↳ android.support.v4.view.PagerTitleStrip
                ↳ android.support.v4.view.PagerTabStrip


(一)说明

官网原文:
PagerTabStrip is an interactive indicator of the current, next, and previous pages of a ViewPager. It is intended to be used as a child view of a ViewPager widget in your XML layout. Add it as a child of a ViewPager in your layout file and set its android:layout_gravity to TOP or BOTTOM to pin it to the top or bottom of the ViewPager. The title from each page is supplied by the method getPageTitle(int) in the adapter supplied to the ViewPager.

For a non-interactive indicator, see PagerTitleStrip.

大致意思:
PagerTabStrip是一个能为ViewPager指示上一个页面、当前页面,下一个页面的可交互的指示器。需要在布局文件中把它写作ViewPager的一个子视图,并设置他的android:layout_gravity属性值为TOP或BOTTOM来把他放置在ViewPager的顶部或者底部。每一页的标题需要在适配器中通过方法getPageTitle(int) 提供给ViewPager。

如果需要不具交互性的指示器,查看PagerTitleStrip。



(二)ViewPager 实现带滑动导航条选项卡的步骤:

  1. 特殊的布局文件;
    ViewPager:
    &
    PagerTabStrip:

    PagerTitleStrip:

  2. 通过findViewById()方法来实例化ViewPager和PagerTabStrip;

  3. 设置PagerTabStrip;
    • 通过PagerTabStrip 对象的setTextColor()方法设置导航条文字颜色;
    • 通过PagerTabStrip 对象的setBackgroundColor ()方法设置导航条背景颜色;
    • 通过PagerTabStrip 对象的setDrawFullUnderline()方法设置导航条下方是否有完整下划线颜色;
    • 通过PagerTabStrip 对象的setTabIndicatorColor()方法设置导航条文字下方的指示颜色;
    • 通过PagerTabStrip 对象的setTextSpacing()方法设置导航条文字的间隔。



主要代码如下:
MainActivity.java

package com.noonecode.viewpagerpagertabstripdemo;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import android.graphics.Color;import android.os.Bundle;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.PagerTabStrip;import android.support.v4.view.ViewPager;import android.util.TypedValue;public class MainActivity extends FragmentActivity {    private ViewPager mViewPager;    private PagerTabStrip mPagerTabStrip;    private List titles;// 标题    private List fragments;// 页面    private MyAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initViews();        initData();    }    private void initViews() {        mViewPager = (ViewPager) findViewById(R.id.viewpager);        mPagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertabstrip);        mPagerTabStrip.setBackgroundColor(Color.RED);// 背景颜色        mPagerTabStrip.setTextColor(Color.WHITE);// 标题颜色,这里需要带透明度的颜色值        mPagerTabStrip.setTabIndicatorColor(Color.YELLOW);// 指示器颜色,这里需要带透明度的颜色值        mPagerTabStrip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 26);// 字体大小    }    private void initData() {        titles = new ArrayList(Arrays.asList("娱乐", "经济", "教育", "军事"));        fragments = new ArrayList();        fragments.add(new Fragment1());        fragments.add(new Fragment2());        fragments.add(new Fragment3());        fragments.add(new Fragment4());        adapter = new MyAdapter(getSupportFragmentManager());        mViewPager.setAdapter(adapter);    }    class MyAdapter extends FragmentPagerAdapter {        public MyAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return fragments.get(position);        }        @Override        public int getCount() {            return fragments.size();        }        @Override        public CharSequence getPageTitle(int position) {            return titles.get(position);        }    }}



activity_main.xml

.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/viewpager"    android:layout_width="match_parent"    android:layout_height="match_parent"  tools:context="com.noonecode.viewpagerpagertabstripdemo.MainActivity" >    .support.v4.view.PagerTabStrip        android:id="@+id/pagertabstrip"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="top" />.support.v4.view.ViewPager>



每个Fragment中只有一个TextView,代码不再贴出来。



运行效果展示:
Android 导航条效果实现(三) ViewPager+PagerTabStrip_第1张图片

注意

  • PagerTabStrip设置的颜色值是有透明度的,未设置透明度将看不到预期的效果



(完毕)

导航:
Android 导航条效果实现(一) TabActivity+TabHost
http://blog.csdn.net/qq_33425116/article/details/52573967

Android 导航条效果实现(二) FragmentTabHost
http://blog.csdn.net/qq_33425116/article/details/52575811

Android 导航条效果实现(三) ViewPager+PagerTabStrip
http://blog.csdn.net/qq_33425116/article/details/52577570

Android 导航条效果实现(四) ViewPager+自定义导航条
http://blog.csdn.net/qq_33425116/article/details/52584282

Android 导航条效果实现(五) ActionBar+Fragment
http://blog.csdn.net/qq_33425116/article/details/52587635

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment
http://blog.csdn.net/qq_33425116/article/details/52599818

更多相关文章

  1. android tv 实现颜色条滚动效果
  2. android仿照ipone的弹性效果
  3. android 颜色(color)
  4. android系统提供的几种颜色Color
  5. android RadioButton 点击时候出现点击声音的效果
  6. android实现SharedPreferences的存入与取出的现实效果
  7. Android 点击按钮,文字改变颜色
  8. android radiobutton选中字体颜色改变的方法
  9. Android窗口浮在屏幕上效果

随机推荐

  1. php操作redis命令及代码实例大全
  2. Thinkphp极验滑动验证码实现步骤解析
  3. PHP获取真实IP及IP模拟方法解析
  4. 函数基础知识
  5. 外贸SEO优化,难道仅仅把排名做上去就足够
  6. 留言表单实战
  7. 留言板学习
  8. 访问器属性与获取dom元素方法学习
  9. PHP如何通过date() 函数格式化显示时间
  10. PHP实现倒计时功能