アクティビティにスライド式の引き出しメニューがあり、その上にいくつかのタブがあるアクションバーがあります。
スライド式引き出しをタブの下ではなくタブの上をスライドさせたいのですが。
これが今の様子です...
これをどのように行うことができるかについてのアイデアはありますか?
注:ここでいくつかの規則とUIパターンを壊している可能性があることを理解しています。まったく機能しない場合は、代替案を検討します。しかし、最初にこれを機能させたいと思います。
編集:必要なことを正確に行うGoogle Playミュージックアプリの以下のスクリーンショットを参照してください。以下の@CommonsWareの回答を参照してください。彼は、私が慣例に違反している可能性があることに同意しています。しかし、Play Musicアプリを考えれば、それもまったく珍しいことではないかもしれません。
これをどのように行うことができるかについてのアイデアはありますか?
次のいずれかを実行します。
アクションバーのタブから、おそらくViewPager
とタブ付きインジケーター(ViewPageIndicatorのPagerTabStrip
、TabPageIndicator
)から切り替えます。
既存のサードパーティ製ドロワーの実装が新しいUI標準にまだ更新されていないかどうかを確認します
DrawerLayout
をフォークし、それに合わせて変更します
独自のナビゲーションドロワーをゼロから転がす
私はここでいくつかの規則とUIパターンを壊しているかもしれないことを理解しています
正しい 。
以下のライブラリを使用して、Google Playミュージックアプリに似たナビゲーションモデルを取得できます。
プロジェクトを作成しました Navigation Drawer with Tab Strip Example githubで、ご覧ください。
以下はそのスクリーンショットです。
このライブラリもチェックしてください http://www.androidviews.net/2013/04/pager-sliding-tabstrip/ 男は素晴らしい仕事をしました。ナビゲーションドロワーで使用でき、完全に機能します。
最後に、このブログのスライドタブ上のナビゲーションドロワーを実現するためのクリーンな方法 http://www.paulusworld.com/technical/Android-navigationdrawer-sliding-tabs
これは、サードパーティのライブラリなしで実行できます。 Googleのスライドタブのサンプルをご覧ください
SlidingTabsBasic: http://developer.Android.com/samples/SlidingTabsBasic/project.html
SlidingTabsColors: http://developer.Android.com/samples/SlidingTabsColors/project.html
また、この素晴らしいリンクをチェックしてください: http://manishkpr.webheavens.com/Android-sliding-tabs-example/ 私にとって魅力のように働いた。 :)
Actionbar Navigaton DrawerとSwipeTabsは同時に使用できません。シンプルなタブホストによるアクションバーとスワイプタブを使用してナビゲーションドロワーを実装する必要があります。タブにはTabhostを使用し、各タブの内部ビューにはフラグメントを使用できます。フラグメントをビューページャー経由で使用して、スクロール/スワイプ効果を提供する必要があります。メソッドを使用してタブとビューページャーを互いに接続する
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<TabHost
Android:id="@+id/tabHost"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<HorizontalScrollView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:fillViewport="true"
Android:scrollbars="none" >
<TabWidget
Android:id="@Android:id/tabs"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" >
</TabWidget>
</HorizontalScrollView>
<FrameLayout
Android:id="@Android:id/tabcontent"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<Android.support.v4.view.ViewPager
Android:id="@+id/viewPager_home"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
</TabHost>
引き出しの断片内にタブを使用しています。私はこの問題を追加して解決します
_getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
_
onDrawerClosed()
およびgetActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
メソッドのonDrawerOpend()
で。
これがお役に立てば幸いです。
Playミュージックは標準のActionBar.Tabを使用しません
OnDrawerClosedおよびonDrawerOpened関数内でnavigationModeを設定することにより、この要件を達成することができました。タブは実際にはすぐに消えないため、一時的な修正です。
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
if(getActionBar().getTabCount()>0) //Add tabs when the fragment has it
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
...
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
..
}
タブのあるフラグメントとそれ以外のフラグメントがある場合、タブのないフラグメントのタブを作成することを忘れないでください。
getActionBar().removeAllTabs();
私は同じ問題を抱えていましたが、見つけた唯一の解決策は、内部フラグメント内で(fragmentActivityではなく)タブを使用することでした。それが最良の解決策であったかどうかはわかりません、私が抱えていた唯一の問題はこのタブをスタイリングすることでしたが、残りは完璧に動作します