zoukankan      html  css  js  c++  java
  • 使用PagerSlidingTabStrip实现顶部导航栏

    使用PagerSlidingTabStrip配合ViewPager实现顶部导航栏。

    效果图如下:

            

    PagerSlidingTabStrip是github上的一个开源项目,项目地址如下。
    https://github.com/astuetz/PagerSlidingTabStrip

    (一)PagerSlidingTabStrip的使用

    在使用之前,我们先来看一下PagerSlidingTabStrip中的自定义属性。

    <declare-styleable name="PagerSlidingTabStrip">  
        <attr name="pstsIndicatorColor" format="color" />  
        <attr name="pstsUnderlineColor" format="color" />  
        <attr name="pstsDividerColor" format="color" />  
        <attr name="pstsIndicatorHeight" format="dimension" />  
        <attr name="pstsUnderlineHeight" format="dimension" />  
        <attr name="pstsDividerPadding" format="dimension" />  
        <attr name="pstsTabPaddingLeftRight" format="dimension" />  
        <attr name="pstsScrollOffset" format="dimension" />  
        <attr name="pstsTabBackground" format="reference" />  
        <attr name="pstsShouldExpand" format="boolean" />  
        <attr name="pstsTextAllCaps" format="boolean" />  
    </declare-styleable>  
     

    各属性的详细介绍如下。
    pstsIndicatorColor:滑动条的颜色。
    pstsIndicatorHeight:滑动条的高度。
    pstsUnderlineColor:底部线条的颜色。(底部线条会填充屏幕宽度)
    pstsUnderlineHeight:底部线条的高度。
    pstsDividerColor:tab之间的竖直分割线的颜色。
    pstsDividerPadding:tab之间的竖直分割线,距离顶部和底部的距离,即它的paddingTop和paddingBottom。
    pstsTabPaddingLeftRight:单个tab内部的左间距和右间距,即它的paddingLeft和paddingRight。
    pstsTabBackground:单个tab的背景。
    pstsScrollOffset:当前tab滚动的偏移量。
    pstsShouldExpand:设置为ture,每个tab的权重一样,均分屏幕宽度,默认值false。
    pstsTextAllCaps:是否将tab中的字母转换成大写,默认值true。

    下面,我们将PagerSlidingTabStrip使用到具体项目中。

     首先将PagerSlidingTabStrip添加到工程module的gradle中。

     compile 'com.astuetz:pagerslidingtabstrip:1.0.1' 

    接下来添加布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <com.astuetz.PagerSlidingTabStrip xmlns:tab="http://schemas.android.com/apk/res-auto"
            android:id="@+id/two_tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#fafafa"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:textColor="#333333"
            android:textSize="13sp"
            tab:pstsDividerColor="@android:color/transparent"
            tab:pstsIndicatorColor="#ed5955"
            tab:pstsIndicatorHeight="2dp"
            tab:pstsShouldExpand="true"
            tab:pstsTabBackground="@android:color/transparent"
            tab:pstsUnderlineColor="@android:color/transparent"/>
        <android.support.v4.view.ViewPager
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/two_viewpager"></android.support.v4.view.ViewPager>
    </LinearLayout>

    最后实现逻辑代码:

    package com.example.tablayoutdemo;
    
    import android.support.v4.app.Fragment;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import com.astuetz.PagerSlidingTabStrip;
    
    public class TwoActivity extends AppCompatActivity {
    
        private PagerSlidingTabStrip two_tab;
        private ViewPager two_vp;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_two);
            two_tab = (PagerSlidingTabStrip) findViewById(R.id.two_tab);
            two_vp = (ViewPager) findViewById(R.id.two_viewpager);
    
            Fragment [] fragments = {new BlankFragment(),new BlankFragment(),new BlankFragment(),
                    new BlankFragment(),new BlankFragment(),new BlankFragment(),new BlankFragment(),
                    new BlankFragment()};
            String [] titles = {"头条","科技","财经","互联网","健身","手机","图片","段子"};
            //设置适配器
            TabPagerAdapter adapter = new TabPagerAdapter(getSupportFragmentManager(),fragments,titles);
            two_vp.setAdapter(adapter);
            //绑定
            two_tab.setViewPager(two_vp);
        }
    }

    适配器类:

    package com.example.tablayoutdemo;
    
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    
    public class TabPagerAdapter extends FragmentPagerAdapter{
    
        private Fragment [] mFragments;
        private String [] mTitles;
    
        public TabPagerAdapter(FragmentManager fm, Fragment[] mFragments, String[] mTitles) {
            super(fm);
            this.mFragments = mFragments;
            this.mTitles = mTitles;
        }
    
        @Override
        public Fragment getItem(int position) {
            return mFragments[position];
        }
    
        @Override
        public int getCount() {
            return mFragments.length;
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return mTitles[position];
        }
    }
  • 相关阅读:
    Ajax | Form 上传图片文件
    .NET Core 上传图片到七牛云
    限制input输入框只能输入 数字
    MySql操作命令创建学生管理系统
    大数据之kafka-05.讲聊聊Kafka的版本号
    大数据之kafka-02.搞定kafka专业术语
    消息队列的作用以及kafka和activemq的对比
    .Net Core 3.1迁移整理
    RabbitMQ的使用
    .NET Framework 项目多环境下配置文件web.config
  • 原文地址:https://www.cnblogs.com/changyiqiang/p/8877199.html
Copyright © 2011-2022 走看看