【问题标题】:Android slide menu that slide from both sides left and right左右两侧滑动的安卓滑动菜单
【发布时间】:2013-02-01 06:34:41
【问题描述】:

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

提前致谢。

【问题讨论】:

标签: android android-side-navigation


【解决方案1】:

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

SlidingMenu

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

编辑:

一个例子:

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()) 指定布局以及指定菜单大小和阴影等的其他选项.

【讨论】:

  • 非常感谢。该演示包含我想要的内容。
  • 请你建议我它是如何从左到右工作的并且在同一个应用程序中从右到左......就像 Facebook 一样......??
  • 但它只能从左侧打开滑块,不能从右侧打开。请建议
【解决方案2】:

试试这个

https://github.com/srikanthgr/FacebookSlideOutmenu

在你的项目中实现它,这正是你想要的。

【讨论】:

    【解决方案3】:

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

    另外,Simon 的实现具有简单的配置,用于从 Left-to-Right 和 Right-to-Left 进行切换:https://github.com/SimonVT/android-menudrawer。页面上有一个简单的例子。

    虽然我不是公开发表意见的人,但我发现 Simon 的库更易于使用。 ;-)

    话虽如此,但我也没有绝对剥夺 jfeinstein 的任何功劳。他的库为我最好的销售应用程序之一提供了动力。 :-)

    【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 寻找双方。不只是离开。
    【解决方案5】:

    用这个,对你有好处:

    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;
    }
    

    }

    【讨论】:

      【解决方案6】:
       @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);
      
      
          }
      

      【讨论】:

      • 你能修正你的格式吗?您的某些缩进已关闭。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 2013-10-03
      • 1970-01-01
      • 2021-01-26
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多