我有一个使用SlidingMenu的父类.扩展父类的子项显示主页图标上的滑动菜单.
如何禁用子类中的滑动菜单?
public class BCFragmentActivity extends SlidingFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setSlidingActionBarEnabled(true); setBehindContentView(R.layout.slide_menu); getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width); getSlidingMenu().setShadowDrawable(R.drawable.shadow); getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width); getSlidingMenu().setBehindScrollScale(0.25f); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: toggle(); return true; } return super.onOptionsItemSelected(item); } }
儿童代码:
public class SettingsPagerActivity extends BCFragmentActivity { private ActionBar actionBar; private ViewPager settingsPager; private Tab profilesTab; private Tab accountsTab; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings_pager); actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); settingsPager = (ViewPager) findViewById(R.id.settingsPage); settingsPager.setOnPageChangeListener(pageChangeListener); FragmentManager fm = getSupportFragmentManager(); profilesTab = actionBar.newTab() .setText("Profile") .setTabListener(tabListener); accountsTab = actionBar.newTab() .setText("Account") .setTabListener(tabListener); actionBar.addTab(profilesTab); actionBar.addTab(accountsTab); } ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override public void onTabSelected(Tab tab,FragmentTransaction ft) { settingsPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(Tab tab,FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabReselected(Tab tab,FragmentTransaction ft) { // TODO Auto-generated method stub } }; ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { super.onPageSelected(position); actionBar.setSelectedNavigationItem(position); } }; }
解决方法
我想不出一种“禁用”它的方法,但你可以通过调用子类来删除所有功能
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
这将禁用滑动菜单的任何手势检测.如果您有一个操作栏,请执行onCreate中的常规操作:
actionBar.setDisplayHomeAsUpEnabled(true);
并处理它就好像你没有SlidingMenu:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } }