android - 如何将 SherlockFragmentActivity 与 SlidingMenu 一起使用?

标签 android actionbarsherlock slidingdrawer slidingmenu

我正在使用 SlidingMenu它使用不同类型的 Fragment/SherlockFragment 作为菜单。
我需要 SherlockFragmentActivity,因为我在菜单中使用 Tabs
如何将 SherlockFragmentActivity 与 SlidingMenu 一起使用?

如果不可能,是否有任何其他库可以让我拥有滑动菜单和滑动菜单中的选项卡?我不确定是否可以使用 android-menudrawer 来实现

编辑: 想要实现以下目标。即,菜单内的标签
单击菜单按钮时,打开菜单 fragment ,里面 Menufragment我想添加标签。

This is home screen Menu With Tabs

最佳答案

编辑:

我想把这个设计当作一个挑战,看看结果如何:

enter image description here enter image description here

正如我在评论中所建议的,我使用了 PagerSlidingTabStripViewPager

我没有包含 ActionBarSherlock,但如果需要,修改起来很容易:MainActivity 需要从 SherlockFragmentActivity 扩展,并将主题 @style/Theme.Sherlock.Light 添加到 list 文件,仅此而已。

(为了确保您明白了,PagerSlidingTabStrip 是在底部创建标签的那个)

以下是我将 PagerSlidingTabStrip 和 ViewPager 与 SlidingMenu 集成的步骤:

1 - 进口 SlidingMenu库到 Eclipse 工作区
2 - 进口 PagerSlidingTabStrip库到 Eclipse 工作区
3 - 将 Android 支持库添加到您的项目(并将相同的 .jar 复制到 SlidingMenu 和 PagerSlidingTabString 库中,否则 eclipse 可能会报错)
4 - MainActivity 的最小示例:

public class MainActivity extends FragmentActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SlidingMenu menu = new SlidingMenu(this);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setBehindOffset(50);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(R.layout.left_menu);

        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));

        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        tabs.setViewPager(pager);
    }
}

5 - 滑动菜单的布局,R.layout.left_menu:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/left_menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#CCC"
    android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res/org.grec">

    <com.astuetz.viewpager.extensions.PagerSlidingTabStrip
        android:id="@+id/tabs"
        app:shouldExpand="true"
        android:layout_width="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_height="48dip" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/tabs" />

</RelativeLayout>

6 - ViewPagerAdapter:

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

    private final int PAGES = 3;
    private String[] titles={"Tab 1", "Tab 2", "Tab 3"};

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new TabFragment1();
            case 1:
                return new TabFragment2();
            case 2:
                return new TabFragment3();
            default:
                throw new IllegalArgumentException("The item position should be less or equal to:" + PAGES);
        }
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }

    @Override
    public int getCount() {
        return PAGES;
    }
}

7 - 还有一个 fragment 示例,TabFragment1.java(其他两个类似):

public class TabFragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_tab_1, container, false);
    }
}

8 - fragment R.layout.fragment_tab_1 的布局非常简单,它包含一个 TextView,因此我不会在此处包含它。

我希望这个例子能解决您的问题,并帮助您走上正轨。

github 上的完整源代码:https://github.com/vgrec/SlidingMenuWithViewpager

关于android - 如何将 SherlockFragmentActivity 与 SlidingMenu 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18226205/

相关文章:

java - Android - Listview通过忽略大小写搜索内部文本

android - 媒体路由器 : Detecting a chromecast device when using ActionBarSherlock?

Android - onOptionsItemSelected UI 卡住直到完成

java - 声明 editText java 时未使用局部变量

android - 对齐适配器行元素

android - 在 ActionBarSherlock 中心设置自定义文本

java - umano android slidinguppanel 2 views as sliding child 遇到麻烦

android - 滑动菜单锁定上 View 的触摸事件

android - 如何使SlidingDrawer透明

java - 为什么我的 ListView 上的 setAdapter() 可能会产生 NullPointerException?