Android PagerSlidingTabStripを使ってみた

2013-05-30T00:00:00+00:00 Android Java

https://github.com/astuetz/PagerSlidingTabStrip

デモアプリもある模様だからそれみれば良いんだけど、いわゆるViewPager+PagerTabStripにインディケーター装飾を付ける物なのかなと。とりあえず以前書いたのをベースに使ってみた

まずはActivityから

package sample.test;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import com.astuetz.viewpager.extensions.PagerSlidingTabStrip;

public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.main);

        ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
        viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager()));

        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs);
        tabs.setViewPager(viewPager);
        tabs.setIndicatorColor(0xFFFF0000);
        tabs.setDividerColor(0xFF666666);
    }
}

んまぁインディケーターとかディバイダーな色を変えられたりとか。他にも色々ありそうだけど、そこはソース嫁

でレイアウトでPagerTabStripな所をPagerSlidingTabStripに変えないといけない。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.astuetz.viewpager.extensions.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="48dip" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tabs" />

</RelativeLayout>

android:layout_belowを付けないとタブをタッチしても反応しないので必ず付ける。まぁそんくらい他のオプションとかはサンプルなソース読めって事で

で起動するとこんな感じ

んまぁ現在のタブのインディケーターな色とかを指定したのにしたりだとか出来る模様

ちなみにいわゆるFragmentPagerAdapterとかにcom.astuetz.viewpager.extensions.PagerSlidingTabStrip.IconTabProviderなインターフェースを実装して、getPageIconResIdをオーバーライドするとタブに表示されるのがアイコンになる

な感じになる

追記

タブのテキストはtoUpperCaseされる模様。されたくないのであればsetAllCaps(false)にすれば良い模様(setViewPagerする前にやる事)

simplecovをspork環境下で動かすとレポートが生成されない件 BaseAdapterでgetFilter