13

我正在尝试制作类似于 Facebook 应用程序中的滑动抽屉菜单。我在这里解决了许多像这个惊人的问题。并找到了很多库,但它们都是从左到右或从右到左滑动的。我想通过顶部栏中的两个按钮使其从两侧、从左到右和从右到左滑动。谁能帮我这个。

提前致谢。

4

6 回答 6

20

这是我使用的,并且完全符合您的要求:

滑动菜单

您必须自己实现按钮功能,但应该不会太难!

编辑:

一个例子:

SlidingMenu menuS = new SlidingMenu(this);
menuS.setMode(SlidingMenu.LEFT_RIGHT);
menuS.setMenu(R.layout.slideout_list);
menuS.setSecondaryMenu(R.layout.slideout_list2);

如代码所示,您需要将模式设置为 LEFT_RIGHT 并且必须为左侧菜单 (setMenu()) 和右侧菜单 (setSecondaryMenu()) 指定布局以及指定菜单大小和阴影等的其他选项。

于 2013-02-16T10:02:50.157 回答
6

试试这个

https://github.com/srikanthgr/FacebookSlideOutmenu

将此实施到您的项目中,这正是您想要的。

于 2014-02-27T06:20:44.210 回答
5

jfeinstein 的SlidingMenu 原版的从右到左滑动菜单有一个分支: https ://github.com/jfeinstein10/SlidingMenu/tree/slidingright

或者,Simon 的实现具有简单的配置,可在此处从左到右从右到左进行切换: https ://github.com/SimonVT/android-menudrawer 。页面上有一个简单的例子。

虽然,我不是公开发表意见的人,但我发现西蒙的图书馆更容易使用。;-)

话虽如此,但我也绝对不会从jfeinstein那里拿走任何功劳。他的图书馆为我最畅销的应用程序之一提供动力。:-)

于 2013-02-16T10:11:19.133 回答
5

这个问题现在很老了,但它现在已经内置在Android中。因此,如果人们正在搜索并看到这篇文章,请点击 Android 开发人员页面上的 Navigation Drawer 部分。

http://developer.android.com/design/patterns/navigation-drawer.html

于 2013-09-23T01:16:30.493 回答
4

使用这个,它对你有好处:

abstract public class BaseSlideFragmentActivity extends SlidingFragmentActivity implements IActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    Utils.log(new Exception(), "[onCreate]");
    super.onCreate(savedInstanceState);

    getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

    setBehindContentView(R.layout.menu_right);
    getSupportFragmentManager().beginTransaction().replace(R.id.menuRight, new MenuRightFragment()).commit();

    getSlidingMenu().setSecondaryMenu(R.layout.menu_left);
    getSupportFragmentManager().beginTransaction().replace(R.id.menuLeft, new MenuLeftFragment()).commit();

    getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width);
    getSlidingMenu().setBehindOffsetRes(R.dimen.slidingmenu_offset);
    getSlidingMenu().setFadeDegree(0.35f);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    setSlidingActionBarEnabled(false);
}

public Activity getActivity() {
    return this;
}

@Override
public MyApplication getApplicationContext() {
    return (MyApplication) super.getApplicationContext();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Utils.log(new Exception(), "[onOptionsItemSelected]");
    switch (item.getItemId()) {
        case android.R.id.home:
            toggle();
            return true;
        case R.id.setting:
            if (getSlidingMenu().isMenuShowing()) {
                toggle();
            }
            else {
                showSecondaryMenu();
            }
            return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    Utils.log(new Exception(), "[onCreateOptionsMenu]");
    getSupportMenuInflater().inflate(R.menu.menu_setting, menu);
    return true;
}

}

于 2013-06-28T10:53:13.117 回答
1
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setTitle(R.string.attach);
        // set the content view
        setContentView(R.layout.activity_main);

      // configure the Sliding right Menu
        SlidingMenu menuR = new SlidingMenu(this);
        menuR.setMode(SlidingMenu.RIGHT);
        menuR.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);



   //     menuR.setShadowWidthRes(R.dimen.abc_action_bar_default_height);

     // menu.setShadowDrawable(R.drawable.shadow);right menu
        menuR.setBehindOffsetRes(R.dimen.abc_action_bar_default_height);
        menuR.setFadeDegree(0.35f);
        menuR.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menuR.setMenu(R.layout.right_menu_layout);


      // configure the Sliding left Menu
        SlidingMenu menuL = new SlidingMenu(this);
        menuL.setMode(SlidingMenu.LEFT);
        menuL.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);


     //       menuL.setShadowWidthRes(R.dimen.abc_action_bar_default_height);

     // menu.setShadowDrawable(R.drawable.shadow);left menu
        menuL.setBehindOffsetRes(R.dimen.abc_action_bar_default_height);
        menuL.setFadeDegree(0.35f);
        menuL.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menuL.setMenu(R.layout.left_menu_layout);


    }
于 2014-10-09T16:15:01.093 回答