android - 在 Activity 中禁用 SlidingMenu

标签 android android-ui sliding

我有一个使用 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);
    }
}

关于android - 在 Activity 中禁用 SlidingMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14109240/

相关文章:

javascript - 如何添加到 expo 托管项目的 build.gradle 中的默认配置?

android - 总计无法解析为 Android 中的类型

android - 从 ICS ActionBar 切换到 Lollipop 工具栏后缺少导航图标

安卓滑动标签

悬停时 CSS 滑动下划线 - 颜色过渡不适用于已访问的链接

android - fragment YouTubePlayerSupportFragment 中的重复 ID

java - Android 中管理 View 重用的代码在哪里?

Android - notifyDataSetChanged() 和线程

C++ Smooth player - 墙壁 - 碰撞(靠墙滑动)

Android 删除延迟后的 xml 元素上的回调