我正在尝试制作类似于 Facebook 应用程序中的滑动抽屉菜单。我在这里解决了许多像这个惊人的问题。并找到了很多库,但它们都是从左到右或从右到左滑动的。我想通过顶部栏中的两个按钮使其从两侧、从左到右和从右到左滑动。谁能帮我这个。
提前致谢。
我正在尝试制作类似于 Facebook 应用程序中的滑动抽屉菜单。我在这里解决了许多像这个惊人的问题。并找到了很多库,但它们都是从左到右或从右到左滑动的。我想通过顶部栏中的两个按钮使其从两侧、从左到右和从右到左滑动。谁能帮我这个。
提前致谢。
这是我使用的,并且完全符合您的要求:
您必须自己实现按钮功能,但应该不会太难!
编辑:
一个例子:
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()) 指定布局以及指定菜单大小和阴影等的其他选项。
jfeinstein 的SlidingMenu 原版的从右到左滑动菜单有一个分支: https ://github.com/jfeinstein10/SlidingMenu/tree/slidingright
或者,Simon 的实现具有简单的配置,可在此处从左到右和从右到左进行切换: https ://github.com/SimonVT/android-menudrawer 。页面上有一个简单的例子。
虽然,我不是公开发表意见的人,但我发现西蒙的图书馆更容易使用。;-)
话虽如此,但我也绝对不会从jfeinstein那里拿走任何功劳。他的图书馆为我最畅销的应用程序之一提供动力。:-)
这个问题现在很老了,但它现在已经内置在Android中。因此,如果人们正在搜索并看到这篇文章,请点击 Android 开发人员页面上的 Navigation Drawer 部分。
http://developer.android.com/design/patterns/navigation-drawer.html
使用这个,它对你有好处:
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;
}
}
@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);
}