全新android Tab控件PagerSlidingTabStrip最简使用方法

众所周知Android的Tab控件不是很好用,因此Github上的PagerSlidingTabStrip项目被广为使用,该项目地址为:

https://github.com/astuetz/PagerSlidingTabStrip

其示例图如下:


由于其demo代码较长,难以理解,因此我总结了一个最简的使用方法。

第一,在ADT中导入PagerSlidingTabStrip中的library项目,若使用Android Studio则直接导入即可,若使用ADT则需参考我的上一篇文章进行导入:

http://blog.csdn.net/logicteamleader/article/details/45202863

并将library项目改名为PagerSlidingTabStrip-lib

第二,创建自己的项目,其中引用PagerSlidingTabStrip-lib项目。在自己的项目中创建几个Fragment,并继承FragmentPagerAdapter类实现一个MyPagerAdapter类,代码如下(略去了几个Fragment的layout和代码):

package wxbtabexam.apkkids.com;

import java.util.ArrayList;

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.ViewPager;
import android.util.DisplayMetrics;
import android.util.TypedValue;

import com.astuetz.PagerSlidingTabStrip;
import com.example.wxbtabexam.R;

public class HomeActivity extends FragmentActivity {
	private ViewPager pager;
	private MyPagerAdapter pagerAdapter;
	private PagerSlidingTabStrip tabs;

	@Override
	protected void onCreate(Bundle arg0) {
		super.onCreate(arg0);
		setContentView(R.layout.home_layout);
		
		tabs = (PagerSlidingTabStrip) this.findViewById(R.id.tabs);
		pager = (ViewPager) this.findViewById(R.id.pager);
		initTabs();
		ArrayList<Fragment> fragmentlist = new ArrayList<Fragment>();
		
		//注意,这三个Fragment需要自己实现
		ButtonFragment buttonFragment = new ButtonFragment();
		TextFragment textFragment = new TextFragment();
		MyListFragment mylistFragment = new MyListFragment();
		fragmentlist.add(buttonFragment);
		fragmentlist.add(textFragment);
		fragmentlist.add(mylistFragment);
		
		pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentlist);
		pager.setAdapter(pagerAdapter);
		
		final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
				.getDisplayMetrics());
		pager.setPageMargin(pageMargin);

		tabs.setViewPager(pager);
	}

	
	/**
     *定义的属性,参考:https://github.com/astuetz/PagerSlidingTabStrip 
     */
    private void initTabs() {
        /**
         * 获取当前屏幕的密度
         */
        DisplayMetrics dm;
        dm = getResources().getDisplayMetrics();
        // 设置Tab是自动填充满屏幕,也就是均分屏幕宽度,每个tab的weight都是一致的    app:pstsShouldExpand="true"
        tabs.setShouldExpand(true);
        // 设置Tab的分割线是透明的     app:pstsDividerColor="@android:color/transparent"
        tabs.setDividerColor(Color.TRANSPARENT);
        // 设置Tab底部与下面分割的细线的高度    app:pstsUnderlineHeight="1dp"
        tabs.setUnderlineHeight((int) TypedValue.applyDimension(
                TypedValue.COMPLEX_UNIT_DIP, 2, dm));
        // 设置Tab 指示器的高度        app:pstsIndicatorHeight="4dp"
        tabs.setIndicatorHeight((int) TypedValue.applyDimension(
                TypedValue.COMPLEX_UNIT_DIP, 4, dm));
        
        // 设置Tab标题文字的大小        app:pstsTabTextSize="16sp"
        tabs.setTextSize((int) TypedValue.applyDimension(
                TypedValue.COMPLEX_UNIT_SP, 16, dm));
        // 设置Tab Indicator的颜色        app:pstsIndicatorColor="#45c01a"
//        tabs.setIndicatorColor(Color.parseColor("#45c01a"));
        int currentColor =0xFF5161BC;
        tabs.setIndicatorColor(currentColor);
        
        // 设置选中Tab文字的颜色         app:pstsSelectedTabTextColor="#45c01a"
//        tabs.setSelectedTextColor(Color.parseColor("#45c01a"));
    }
	
	//MyPagerAdapter要和上面实现的三个Fragment对应起来
	class MyPagerAdapter extends FragmentPagerAdapter{

		private final String[] TITLES = { "Buttons", "TextViews", "List" };
		private ArrayList<Fragment> fragmentlist;

		public MyPagerAdapter(FragmentManager fm,ArrayList<Fragment> list) {
			super(fm);
			fragmentlist = list;
		}

		@Override
		public CharSequence getPageTitle(int position) {
			return TITLES[position];
		}

		@Override
		public int getCount() {
			return fragmentlist.size();
		}

		public Fragment getItem(int position) {
			return fragmentlist.get(position);
		}
	}

}



如此即可。下面是运行图,虽没有PagerSlidingTabStrip提供的Sample项目优美,但也达到了效果。此外可以仔细研究其sample项目获得更多方法。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值