もっと初心者向けのサンプルほしい
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>
こんな感じ
プロジェクトファイル
http://www.mediafire.com/download/ty16jkyfwbetrj9/android_scrollTab_test.zip
あとはどう実装していくかなんだよな・・・