使用ViewPager和导航抽屉的操作栏选项卡

时间:2013-12-26 11:13:30

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

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

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

http://www.omgubuntu.co.uk/wp-content/uploads/2013/07/sidebar.jpg

操作栏分别使用ViewPager选项卡。

http://developer.android.com/design/media/action_bar_pattern_considerations.png

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

我可以使用Fragment使用片段和Action Bar Tabs创建导航抽屉。但这两个例子的初始活动是片段活动。

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

3 个答案:

答案 0 :(得分:8)

使用操作栏选项卡的问题是当抽屉出现时,它将显示在选项卡下,因为选项卡是actionBar的一部分。

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

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

以下是对它的一点解释:

  1. 第一层有一个抽屉,来自v4支持库
  2. 在抽屉里面,第一个元素是tabHost,我将内容的宽度和高度设置为0.
  3. 在tabhost下,有viewpager。
  4. 一旦创建了所有内容,我所做的就是为tabhost创建一个监听器,为viewPager创建另一个监听器,所以当用户点击任何选项卡时,视图寻呼机将设置当前项,反之亦然。

    享受编码!

答案 1 :(得分:6)

对主要活动使用以下布局。

<?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中显示的内容。

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

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

OR

您可以从GitHub Repo获得帮助。

感谢。

答案 2 :(得分:1)

正如您所注意到的那样,ActionBar标签在导航抽屉和此设计模式has been deprecated in API 21中无论如何都不能很好地发挥作用。

我使用Android开发人员SlidingTabs example中的类来实现此效果,而不必包含第三方库依赖项,并且对结果非常满意。还有video tutorial