我正在尝试像Facebook应用程序中那样制作滑动抽屉菜单。我导航了很多问题like this amazing one here。 并找到了很多图书馆,但所有图书馆都从左到右或从右到左在不同的图书馆中滑动。我想通过顶部栏中的两个按钮让它从左右滑动,从左到右,从右到左滑动。任何人都可以帮助我。
提前致谢。
答案 0 :(得分:18)
这是我使用的,完全符合您的要求:
你必须自己实现按钮功能,但它不应该太难!
编辑:
一个例子:
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())指定布局以及指定菜单大小和阴影等的其他选项
答案 1 :(得分:5)
答案 2 :(得分:4)
这里有一个jfeinstein SlidingMenu original的右到左滑动菜单的分支: https://github.com/jfeinstein10/SlidingMenu/tree/slidingright
或者,Simon的实现具有简单的配置,可以在此处从从左到右和从右到左进行切换:https://github.com/SimonVT/android-menudrawer 。页面上有一个简单的例子。
虽然我不是公开发表意见的人,但我发现西蒙的图书馆更容易使用。 ; - )
话虽如此,但我并没有从 jfeinstein 中获取绝对的信用。他的图书馆支持我最好的销售应用程序之一。 : - )
答案 3 :(得分:4)
这个问题现在很老了,但现在已经内置到Android中。因此,如果人们正在搜索并发现这篇文章,请点击Android开发者页面上的导航抽屉部分。
http://developer.android.com/design/patterns/navigation-drawer.html
答案 4 :(得分:3)
使用这个,它对你有好处:
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;
}
}
答案 5 :(得分:0)
@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);
}