【问题标题】:Action Bar Tabs using ViewPager with Navigation Drawer使用带有导航抽屉的 ViewPager 的操作栏选项卡
【发布时间】:2013-12-26 11:13:29
【问题描述】:

要求:- 使用带有导航抽屉的 ViewPager 的操作栏选项卡。

我可以创建一个导航抽屉示例

单独使用 ViewPager 的操作栏选项卡。

但是当我尝试同时使用两者时,我遇到了问题。

我可以使用片段创建导航抽屉,使用片段创建操作栏选项卡。但是这两个示例的初始活动都是片段活动。

如何在作为导航抽屉一部分的片段上实现操作栏选项卡?

【问题讨论】:

  • 您遇到了什么问题?
  • 无法在片段中实现操作栏选项卡,因为它似乎需要一个活动或片段活动...
  • 好的,我能问一下为什么你需要标签和导航抽屉吗?
  • 是的,我希望使用 NavigationDrawer 从主屏幕导航到子级屏幕,然后使用选项卡从那里导航到多级...
  • @chakradharg13 你有没有得到解决方案我被困在同一个..你能帮忙吗?

标签: android android-fragments android-actionbar navigation-drawer


【解决方案1】:

使用actionbar的选项卡的问题是当抽屉出现时,它会出现在选项卡下,因为选项卡是actionBar的一部分。

我尝试过使用 tabHost,效果更好。

您可以在此处获取源代码: https://github.com/jiahaoliuliu/DrawerWithTabsAndViewPager

这里有一点解释:

  1. 第一层有一个抽屉,来自 v4 支持库
  2. 在drawer里面,第一个元素是tabHost,我已经把内容的宽高都设置为0了。
  3. tabhost 下是 viewpager。

创建完所有内容后,我所做的是为 tabhost 创建一个侦听器,为 viewPager 创建另一个侦听器,因此当用户单击任何选项卡时,视图寻呼机将设置当前项目,反之亦然。

享受编码!

【讨论】:

【解决方案2】:

为您的主要活动使用以下布局。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager_container"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ffe6e1d4"
        android:focusable="true"
        android:focusableInTouchMode="true" />    

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:listSelector="@drawable/drawer_list_selector"        
        android:background="@color/drawer_bg" />

</android.support.v4.widget.DrawerLayout>

编写您的 FragmentPagerAdapter,如 APPTabsAdapter 中所示。

这就是我在我的一个项目中构建它的方式。

如果需要,您可以尝试寻求帮助。

你可以从这个GitHub Repo获得帮助。

谢谢。

【讨论】:

  • 我理解这个概念,当我们在一个activity或fragmentactivity中实现它时它可以工作,但是如何在navigationdrawer中的一个fragment上让它工作......
  • 我不想使用actionbarsherlock,想使用内置功能...谢谢
  • 你给出的例子是我需要的,但我不希望它使用 ActionBarSherlock。
  • 请检查您在Android 2.2上接受的新解决方案
  • 这两种解决方案都很好......但你的回答在我需要时帮助了我。谢谢老哥!
【解决方案3】:

正如您所注意到的,ActionBar 选项卡与 Navigation Drawer 和这种设计模式 has been deprecated in API 21 的配合不太好。

我使用来自 Android 开发人员的 SlidingTabs example 中的类来实现此效果,而无需包含 3rd 方库依赖项,并且对结果非常满意。还有一个video tutorial

【讨论】:

  • 我很惊讶 Google 在 API 21 上弃用了它。仍然有很多好的项目使用它(例如 Etsy)。让我们看看编码社区的反应。故事才刚刚开始。
  • android 开发者网站中的训练示例代码仍然使用 NAVIGATION_MODE_TABS。谷歌游戏商店似乎使用了操作栏标签?对吗?
  • 不,最新版本的 Google Play (5.1.11) 根据我的示例使用滑动标签(例如导航到“商店应用程序”)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多