我在一个活动中有一个滑动抽屉菜单,它有一个带有一些选项卡的操作栏。
我想让滑动抽屉滑过标签,而不是在它们下面。
这就是现在的样子……
关于如何做到这一点的任何想法?
注意:我知道我可能在这里打破了一些约定和 UI 模式,如果它根本不起作用,我会看看替代方案。但我想先让这个工作。
编辑:请参阅下面的谷歌播放音乐应用程序的屏幕截图,它完全符合我的需要。请参阅下面的@CommonsWare 的回答,他确实同意我可能违反约定。但是考虑到 Play Music 应用程序,它可能也不是那么罕见。
我在一个活动中有一个滑动抽屉菜单,它有一个带有一些选项卡的操作栏。
我想让滑动抽屉滑过标签,而不是在它们下面。
这就是现在的样子……
关于如何做到这一点的任何想法?
注意:我知道我可能在这里打破了一些约定和 UI 模式,如果它根本不起作用,我会看看替代方案。但我想先让这个工作。
编辑:请参阅下面的谷歌播放音乐应用程序的屏幕截图,它完全符合我的需要。请参阅下面的@CommonsWare 的回答,他确实同意我可能违反约定。但是考虑到 Play Music 应用程序,它可能也不是那么罕见。
您可以使用以下库来获得类似于 Google play 音乐应用的导航模型。
我在 github 上创建了一个带有 Tab Strip Example 的项目 Navigation Drawer,看看它。
下面是它的截图。
关于如何做到这一点的任何想法?
执行以下任一操作:
切换到操作栏选项卡,可能切换到ViewPager
选项卡式指示器(PagerTabStrip
来自TabPageIndicator
ViewPageIndicator)
查看现有的第三方抽屉实现是否尚未更新到新的 UI 标准
分叉DrawerLayout
并修改它以适应
从头开始滚动你自己的导航抽屉
我知道我可能会在这里打破一些约定和 UI 模式
正确。
还要检查这个库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/ 对我来说就像一个魅力。:)
我遇到了同样的问题,但我找到的唯一解决方案是在内部片段(而不是 fragmentActivity)中使用选项卡。我不知道这是否是最好的解决方案,我唯一的问题是设计这个标签,其余的,它工作得很好
播放音乐不使用标准的 ActionBar.Tab 然后你可以通过扩展 HorizontalScrollView 并与 ViewPager 一起使用来实现自己的标签容器
我设法通过在 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);
..
}
如果您有一些带有标签的片段,而其他没有标签的片段,请不要忘记在没有标签的片段的 CreateView 上删除标签。
getActionBar().removeAllTabs();
Actionbar Navigaton Drawer 和 SwipeTabs 不能同时使用。您应该通过简单的 Tabhosts 使用 Actionbar 和 swipetabs 来实现 Navigation Drawer。您可以将 Tabhost 用于选项卡,并将片段用于每个选项卡的内部视图。片段应该通过 viewpager 来提供滚动/滑动效果。通过它们的方法将选项卡和 viewpager 相互连接
<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()
我希望这能帮到您。