Android - 带有子菜单的侧滑菜单

11
我希望我的应用程序有类似Facebook的侧滑菜单。我在谷歌上搜索了这个问题并找到了许多帖子,但它们只帮助我构建了一个单一的侧滑菜单。但我需要的是两级侧滑菜单,即当我在侧滑菜单中点击某个选项时,它应该在其上方打开另一个侧滑菜单(此时第一个侧滑菜单应该变模糊),就像下面所示的Zomato应用程序一样。我尝试使用JFeinstein滑动菜单库,但我无法使用它构建二级侧滑菜单。是否有其他库可以实现这个功能,还是我应该自己构建一个?

下面是Zomato应用程序的侧滑菜单:

enter image description here

当我点击上面显示菜单中的“位置”选项时,它会打开一个如下所示的二级菜单。我想要同样的功能。

enter image description here


3
想象第二个滑动菜单是新菜单,因此像创建两个滑动菜单一样,为第二个菜单分配另一个滑动菜单。这有什么难度吗? - Daler
@Daler 我没有尝试过这个,因为我想让第二级菜单成为一个次级菜单,而不是新的菜单,我的意思是当我点击第一个菜单选项时,它应该变得模糊并移动到第二个菜单后面。 - suresh cheemalamudi
@Daler,你能否更清楚地概述一下你第一条评论的内容? - suresh cheemalamudi
好的,您有一个带有2个级别的滑动菜单,现在您想要添加+1个级别,因此您知道如何制作2个级别的滑动。您可以使用相同的技术将另一个幻灯片添加到第二级幻灯片中,我认为这应该可以通过jfeinstein实现,而无需修改它。 - Daler
让我们在聊天中继续这个讨论(http://chat.stackoverflow.com/rooms/25760/discussion-between-suresh-cheemalamudi-and-daler)。 - suresh cheemalamudi
显示剩余2条评论
2个回答

6
请查看Sliding Panel组件,它是一个小部件,可以在同一屏幕上显示多个深度数据,实现多重重叠视图和滑动交互。
此外,该组件还提供了演示示例供您参考。
谢谢。

我刚刚下载了演示版来检查它的工作情况。我导入并尝试运行它,但它崩溃了,留下了logcat消息,如此处所示 http://pastebin.com/6iKBJ98i - suresh cheemalamudi
@sureshcheemalamudi 你好,你能找到这个需求的解决方案吗?我也有完全相同的需求,需要一个两级滑动菜单,但是一直没有成功。你能帮忙吗?谢谢。 - jasdmystery
非常有 bug 和拖沓的组件。 - agamov

3
您可以使用JFeinstein滑动菜单轻松添加任意数量的菜单级别,将滑动菜单用作主滑动菜单的左侧或右侧滑动视图等。 完整的带有注释和输出的二级菜单代码已添加,以使事情更清晰。
 public class MainActivity extends SlidingFragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // dummy views - content view
        TextView content = new TextView(this);
        content.setBackgroundColor(Color.WHITE);
        content.setText("content");
       // Menu view
        TextView menu = new TextView(this);
        menu.setBackgroundColor(Color.GREEN);
        menu.setText("menu");
        // 2nd level menu view
        TextView subMenu = new TextView(this);
        subMenu.setBackgroundColor(Color.LTGRAY);
        subMenu.setText("submenu");


        //configure sliding menu
        SlidingMenu sm = getSlidingMenu();
        sm.setMode(SlidingMenu.SLIDING_WINDOW);
        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        sm.setBehindOffset(80);
        sm.setBehindScrollScale(0.25f);
        sm.setFadeDegree(0.25f);

        //Another sliding menu - for 2nd level or sub menu 
        SlidingMenu leftSlidingView = new SlidingMenu(this);
        leftSlidingView.setMode(SlidingMenu.SLIDING_WINDOW);
        leftSlidingView.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        leftSlidingView.setBehindOffset(80);
        leftSlidingView.setBehindScrollScale(0.25f);
        leftSlidingView.setFadeDegree(0.25f);

    //==== Required instruments has been created ;) lets put them at right places   

        // setting menu and sub-menu view 
        leftSlidingView.setContent(menu);  // at center of left sliding view
        leftSlidingView.setMenu(subMenu);  // at left of left sliding view

        //set content view
        setContentView(content);           // at center of main sliding view
        // finally, set  leftSlidingView as behind content  view of main view
        setBehindContentView(leftSlidingView); // at left of main sliding view

    }
}

这里是输出结果:

输入图像描述

注意:您需要将JFeinstein滑动菜单库导入并从SlidingFragmentActivity扩展您的活动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接