動かざることバグの如し

3分経てば忘れそうなことをメモします

Scrollable Tabs + Swipeのサンプルがやっとできた

もっと初心者向けのサンプルほしい

Androidのテンプレートの一つである「Scrollable Tabs + Swipe」
やっとできたのでメモ。
まずはメイン。弄るとしたらページ数と各タイトルあたり。
MainActivity.java

public class MainActivity extends FragmentActivity {
	
	SectionsPagerAdapter mSectionsPagerAdapter;
	
	ViewPager mViewPager;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
		mViewPager = (ViewPager) findViewById(R.id.pager);
		mViewPager.setAdapter(mSectionsPagerAdapter);
	}
	public class SectionsPagerAdapter extends FragmentPagerAdapter {

		public SectionsPagerAdapter(FragmentManager fm) {
			super(fm);
		}
		@Override
		public Fragment getItem(int i) {
			Fragment fragment; 
			switch(i){
			case 0:
				 fragment = new MyFragment1();
				 break;
			case 1:
				 fragment = new MyFragment2();
				 break;
			case 2:
				 fragment = new MyFragment3();
				 break;
			default:
				 throw new IllegalArgumentException("Invalid section number");
			}
			Bundle args = new Bundle();
			args.putInt(MyFragment1.ARG_SECTION_NUMBER, i + 1);
			fragment.setArguments(args);
			return fragment;
		}

		@Override
		public int getCount() {
			// ページ総数.
			return 3;
		}

		@Override
		public CharSequence getPageTitle(int position) {
			switch (position) {
			//各ページのタイトル
			case 0:
				return "ぺーじ1";
			case 1:
				return "ぺーじ2";
			case 2:
				return "ぺーじ3";
			}
			return null;
		}
	}
}

各ページのアクティビティ。例としてMyFragment1だけどそれぞれ用意する必要がある。
MyFragment1.java

public class MyFragment1 extends Fragment {
	public static final String ARG_SECTION_NUMBER = "section_number";

	public MyFragment1() {
	}
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View rootView = inflater.inflate(R.layout.page1, container, false);
		return rootView;
	}
}

アプリ本体のレイアウトファイル
activity_main.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!--
    This title strip will display the currently visible page title, as well as the page
    titles for adjacent pages.
    -->

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:paddingBottom="4dp"
        android:paddingTop="4dp"
        android:textColor="#fff" />

</android.support.v4.view.ViewPager>

各ページに表示されるxml。それぞれ用意すること。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
	>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ほげほげ" />

</LinearLayout>

こんな感じ
f:id:thr3a:20130920091646p:plain
プロジェクトファイル
http://www.mediafire.com/download/ty16jkyfwbetrj9/android_scrollTab_test.zip

あとはどう実装していくかなんだよな・・・