我想在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);
如何进行第二级滑动菜单?
答案 0 :(得分: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);
答案 1 :(得分:1)
我们可以在android中使用TranslateAnimation来实现SlideMenu。在XML中创建一个frameLayout并拥有MainXML页面,然后是MainSlidingMenu。邻近MainSlidingMenu具有辅助slidingMenu。默认情况下,MainSlidingMenu和Secondary SlidingMenu不可见。如果按钮单击或任何所需事件发生显示Main SlidingMenu,则如果MainSlidingmenu中有单击/事件,则进一步翻译MainMenu以显示辅助滑动菜单。
答案 2 :(得分: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();
我还没有测试过,但似乎有效。当然,需要进一步的逻辑来实现菜单的期望行为(关闭监听器,选择项目等)。
答案 3 :(得分: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
}
}
结果如下:
希望它会有所帮助:)
答案 4 :(得分:0)
我明白了,这很简单。
menu.setMenu(R.layout.layout_filemenu);
menu.setSecondaryMenu(R.layout.layout_main);
menu.setMode(SlidingMenu.LEFT_RIGHT);
setMenu - &gt;左边 SetSecondaryMenu - &gt;右侧
希望这有帮助