タブのAndroid 4.0での重要なデザイン推奨事項の1つは、適切な場所にある間にallow swipingです。この動作により、ユーザーは選択したタブの内容を横方向にスワイプして、タブ自体と直接対話する必要なく、隣接するタブに移動できます。Androidでタブ間でスワイプを実装するにはどうすればよいですか?
これはどのように実装できますか?
タブのAndroid 4.0での重要なデザイン推奨事項の1つは、適切な場所にある間にallow swipingです。この動作により、ユーザーは選択したタブの内容を横方向にスワイプして、タブ自体と直接対話する必要なく、隣接するタブに移動できます。Androidでタブ間でスワイプを実装するにはどうすればよいですか?
これはどのように実装できますか?
注:これはAndroid TrainingクラスImplementing Effective Navigationからの抜粋です。この(アンドロイド3.0以上)を実装する
、あなたはActionBarタブ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を追加します。あなたは、Android 3.0の下のAPIをターゲットにしている場合は、上記のローマのソリューションを使用することはできません
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());
}
...
}));
。
興味があればActionBarSherlockで同じことを達成する方法についてはblog post hereと書きました。
アンドロイドコンプライアンスサポートライブラリhttp://developer.android.com/tools/extras/support-library.htmlを追加すると、以前のバージョンのソリューションを使用することができます。最新のEclipse ADTプラグインでは、プロジェクトを右クリックして 'Android Tools'>' Add Support Library'を選ぶのと同じくらい簡単です。プロジェクトは、API 14以上(Android 4以降など)で作成する必要があります。アンドロイド2.1で実行するために '
@ JesperB-Android 2.3.3以下のAPIをターゲットとしたアンドロイドアプリのTabHostでタブ間でスワイプを実装する必要があり、ActionBarSherlockを使用しないとどうなりますか?あなたは私にそれのために何かを提案することができます.. ?? –
@ JesperB-実際に私は既に完全に正常に動作しているタブビューでアプリを作った...私はスワイプの機能を更新する必要があります! –
こんにちはRoman、 複数の動的に作成/置換可能なフラグメントを含むスワイプルマルチペインレイアウトを実装するために、antアダプタを実装するサンプルを試してください。 挑戦: - FragmentManagerはリソースIDを使用してフラグメントを追加します。 IDは、ページ間で一意である必要があります(ViewGroupインスタンスをコンテナとして指定することはできません) - FragmentManagerがフラグメントを復元しようとする前にコンテナビューが存在する必要があります - 保持されているインスタンスと方向変更のバグ #1:FragmentManagerが保存しようとすると、NullPointerExceptionフラグメント状態。 #2:LoaderInfo.onLoadCompleteの周囲のNullPointerException – user289463
これは新しい質問として尋ねるべきです。 –
アクションバーにメニューアイコンを追加してViewPagerを使用すると、奇妙なことが起こります... – Maxim