12

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

<?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);
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);

如何进行二级滑动菜单的制作?

4

5 回答 5

4

试试这个:

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);
于 2013-01-31T09:57:11.230 回答
1

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

于 2013-04-03T09:54:41.783 回答
1

这就是我得到它的方式,使用提到的库:

此布局包含顶级滑动菜单,它引用菜单的布局 (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"
    />

这将是二级菜单 (sliding_sub_menu.xml),请注意您在此处设置为 viewAbove 的内容将是实际的顶级内容。

<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/slidingSubMenuRoot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:viewAbove="@layout/fragment_content"
    sliding:viewBehind="@layout/fragment_sliding_menu"
    sliding:touchModeAbove="fullscreen"
/>

内容布局 (fragment_content.xml) 可能是这样的,一个简单的 FrameLayout,然后以编程方式添加所需的片段。

<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"
    />

同样,滑动子菜单内容在布局文件 (fragment_sliding_menu.xml) 中定义,并以编程方式用于广告片段实例。

<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"
    />

要将片段添加到这些 FrameLayouts,请使用类似这样的方法(也可以在添加新片段之前删除潜在的先前片段):

    FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
    fragTrans.add(R.id.slidingSubMenuFrame, SubMenuFragment.newInstance(this));
    fragTrans.commit();

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

于 2013-07-24T08:38:59.287 回答
1

JFeinstein 滑动菜单是一个丰富的库。您可以根据需要轻松添加任意多的菜单级别。这个想法是使用滑动菜单作为主滑动菜单的左或右滑动视图等。这是一个提供 2 级菜单的独立示例。您需要将 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

    }
}

结果如下:

在此处输入图像描述

希望它会有所帮助:)

于 2014-02-25T11:24:23.840 回答
0

我想通了,就是这么简单。

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

setMenu -> 左侧 SetSecondaryMenu -> 右侧

希望这可以帮助

于 2015-06-11T23:47:41.597 回答