Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jfeinstein10/slidingmenu在Android中实现两级滑动菜单?_Android_Slidingmenu - Fatal编程技术网

如何使用jfeinstein10/slidingmenu在Android中实现两级滑动菜单?

如何使用jfeinstein10/slidingmenu在Android中实现两级滑动菜单?,android,slidingmenu,Android,Slidingmenu,我想在android中创建两级滑动菜单。当我单击第一个滑动菜单项时 我需要在左边显示另一个滑动菜单。我使用以下代码创建了第一级滑动菜单 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/menu_frame" android:layout_width="mat

我想在android中创建两级滑动菜单。当我单击第一个滑动菜单项时 我需要在左边显示另一个滑动菜单。我使用以下代码创建了第一级滑动菜单

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView    
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/list_padding"
        android:paddingRight="@dimen/list_padding" />

</FrameLayout> 
如何继续制作第二级滑动菜单?

尝试以下操作:

SlidingMenu menu;
menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT_RIGHT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidth(10);
menu.setFadeDegree(0.0f);
menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
menu.setBehindWidth(200);
menu.setMenu(R.layout.menu_frame);
//Set the secondary menu
menu.setSecondaryMenu(R.layout.menu_frame);
menu.setSecondaryShadowDrawable(R.drawable.shadow);

我们可以在android中使用TranslateAnimation实现SlideMenu。在XML中创建一个frameLayout,然后使用MainXML页面和MainSlidingMenu。与主滑动菜单相邻的是辅助滑动菜单。默认情况下,主滑动菜单和次滑动菜单不可见。如果按钮单击或任何所需事件发生,则显示主滑动菜单,如果主滑动菜单中有单击/事件,则进一步转换主菜单以显示辅助滑动菜单。

这是我使用所述库获得它的方式:

该布局包含顶层滑动菜单,该菜单引用菜单布局(fragment_nav_menu)和子菜单布局引用如上视图所示的布局

<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sliding="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingMenuRoot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:viewAbove="@layout/sliding_sub_menu"
    sliding:viewBehind="@layout/fragment_nav_menu"
    sliding:touchModeAbove="fullscreen"
    />

我还没有做过很多测试,但似乎很有效。当然,需要进一步的逻辑来实现所需的菜单行为(关闭侦听器、选择项等)

JFeinstein滑动菜单是一个丰富的库。您可以根据需要轻松添加任意多个菜单级别。其思想是使用滑动菜单作为主滑动菜单的左或右滑动视图等。下面是一个提供两级菜单的独立示例。您需要的是将JFeinstein滑动菜单作为库导入,并从SlidingFragmentActivity扩展您的活动。我把完整的活动代码与评论,使事情更清楚

 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

    }
}
结果如下:


希望能有帮助:)

我想出来了,很简单

menu.setMenu(R.layout.layout_filemenu);
menu.setSecondaryMenu(R.layout.layout_main);
menu.setMode(SlidingMenu.LEFT_RIGHT);
设置菜单->左侧 设置辅助菜单->右侧


希望这有帮助

我希望第二菜单位于第一个菜单的右侧。但是我将第二个菜单放在第一个菜单的顶部并隐藏它的视图。你能帮我解决上面的问题吗?你必须使用滑动菜单作为视图,检查并修改布局,将几个滑动菜单放在你需要的地方。我对安卓完全陌生。如果你想开发一个包含子菜单的滑动菜单,你能分享代码吗?我已经开发了一个包含子菜单的滑动菜单,使用右菜单,但是很容易使用滑动菜单作为视图。您必须使用SlidingMenu创建一个新布局,并注意参数
sliding:viewOver=“@layout/YOUR\u over\u VIEW”sliding:viewBehind=“@layout/YOUR\u BEHIND\u BEHIND”
。viewAdove必须是您的菜单,而viewAdove必须位于子菜单后面。滑动菜单的使用需要了解Android的几个概念(片段、视图等),看看你是否能够解决这个问题。你能分享一下你是如何解决你的问题的吗?这是我关于同一个问题的问题:@sureshcheemalamudi:我无法解决它。我只用了一级滑动菜单。如果你能解决这个问题。请把答案放在这里。这样我就可以在右边和左边各有一份菜单,对吗?这不是“两层菜单”的想法-对不起,是的。但是我找不到其他的选择。尽管库中有一个名为setSecondaryMenu的选项,但我找不到实现它的方法:(无论如何,谢谢你的帖子!
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainContentFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_background"
    />
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainContentFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_background"
    />
    FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
    fragTrans.add(R.id.slidingSubMenuFrame, SubMenuFragment.newInstance(this));
    fragTrans.commit();
 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

    }
}
menu.setMenu(R.layout.layout_filemenu);
menu.setSecondaryMenu(R.layout.layout_main);
menu.setMode(SlidingMenu.LEFT_RIGHT);