web-dev-qa-db-ja.com

Androidでタブ間のスワイプを実装するにはどうすればよいですか?

Android 4.0 for tabs)の主要な設計推奨事項の1つは、必要に応じてタブ間を スワイプを許可 することです。この動作により、ユーザーは選択したタブのコンテンツを水平方向にスワイプしてナビゲートできます隣接するタブに直接アクセスする必要はありません。

これはどのように実装できますか?

26
Roman Nurik

[〜#〜]ノート[〜#〜]:これは Android Training クラスからの抜粋です効果的なナビゲーションの実装


これを実装するには(Android 3.0以降)、 ActionPage タブAPIと組み合わせて ViewPager を使用できます。

現在のページの変更を確認したら、対応するタブを選択します。この動作を設定するには、アクティビティのonCreate()メソッドで ViewPager.OnPageChangeListener を使用します。

_@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    mViewPager.setOnPageChangeListener(
            new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    // When swiping between pages, select the
                    // corresponding tab.
                    getActionBar().setSelectedNavigationItem(position);
                }
            });
    ...
}
_

そしてタブを選択したら、 ViewPager の対応するページに切り替えます。これを行うには、newTab()メソッドを使用してタブを作成するときに、タブに ActionBar.TabListener を追加します。

_actionBar.newTab()
        ...
        .setTabListener(new ActionBar.TabListener() {
            public void onTabSelected(ActionBar.Tab tab,
                    FragmentTransaction ft) {
                // When the tab is selected, switch to the
                // corresponding page in the ViewPager.
                mViewPager.setCurrentItem(tab.getPosition());
            }
            ...
        }));
_
34
Roman Nurik

Android 3.0)以下のAPIをターゲットにしている場合、上記のRomanのソリューションは使用できません。

私は、誰かが興味を持っている場合にActionBarSherlockで同じことを行う方法について ここのブログ投稿 を書きました。

12
JesperB