zoukankan      html  css  js  c++  java
  • Android 菜单动态变化【添加或去除】

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:id="@+id/menu_items">
            <item android:id="@+id/menu_item_night_mode"
                android:title="@string/menu_item_night_mode"
                android:icon="@android:drawable/ic_menu_preferences"/>
            <item android:id="@+id/menu_item_settings"
                android:title="@string/menu_item_settings"
                android:icon="@android:drawable/ic_menu_preferences"/>
            <item android:id="@+id/menu_item_help"
                android:title="@string/menu_item_help"
                android:icon="@android:drawable/ic_menu_preferences"/>
        </group>
    </menu>
    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // We only want to show it as a menu in landscape, and only for clock/alarm fragment.
            mMenu = menu;
            //方向水平
            if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
                if (mActionBar.getSelectedNavigationIndex() == ALARM_TAB_INDEX ||
                        mActionBar.getSelectedNavigationIndex() == CLOCK_TAB_INDEX) {
                    // Clear the menu so that it doesn't get duplicate items in case onCreateOptionsMenu
                    // was called multiple times.
                    menu.clear();
                    getMenuInflater().inflate(R.menu.desk_clock_menu, menu);
    
    
                    MenuItem nightMode = menu.findItem(R.id.menu_item_night_mode);
                    MenuItem help = menu.findItem(R.id.menu_item_help);
                    if (mActionBar.getSelectedNavigationIndex() == ALARM_TAB_INDEX) {
                        nightMode.setVisible(false);
                        help.setVisible(false);
                    } else if (mActionBar.getSelectedNavigationIndex() == CLOCK_TAB_INDEX) {
                        nightMode.setVisible(true);
                        help.setVisible(false);
                    }
    
                }
                // Always return true for landscape, regardless of whether we've inflated the menu, so
                // that when we switch tabs this method will get called and we can inflate the menu.
                return true;
            }
            return false;
        }
    
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            updateMenu(menu);
            return true;
        }
    
        private void updateMenu(Menu menu) {
            // Hide "help" if we don't have a URI for it.
            MenuItem help = menu.findItem(R.id.menu_item_help);
            if (help != null) {
                Utils.prepareHelpMenuItem(this, help);
            }
    
            // Hide "lights out" for timer.
            MenuItem nightMode = menu.findItem(R.id.menu_item_night_mode);
            if (mActionBar.getSelectedNavigationIndex() == ALARM_TAB_INDEX) {
                nightMode.setVisible(false);
            } else if (mActionBar.getSelectedNavigationIndex() == CLOCK_TAB_INDEX) {
                nightMode.setVisible(true);
            }
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (processMenuClick(item)) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    
        private boolean processMenuClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.menu_item_settings:
                    startActivity(new Intent(DeskClock.this, SettingsActivity.class));
                    return true;
                case R.id.menu_item_help:
                    Intent i = item.getIntent();
                    if (i != null) {
                        try {
                            startActivity(i);
                        } catch (ActivityNotFoundException e) {
                            // No activity found to match the intent - ignore
                        }
                    }
                    return true;
                case R.id.menu_item_night_mode:
                    startActivity(new Intent(DeskClock.this, ScreensaverActivity.class));
                default:
                    break;
            }
            return true;
        }
  • 相关阅读:
    jQuery知识总结
    WEB架构师成长之路之2
    利用Travis CI 让你的github项目持续构建(Node.js为例)
    C#实现UDP分包组包
    win7下安装32位GoSublime Package
    爬虫部分技术要点浅析
    如何使用“依赖注入”的
    分布式ACM Online Judge 架构设计
    “容器组件服务”模型
    Maven学习
  • 原文地址:https://www.cnblogs.com/onelikeone/p/7582676.html
Copyright © 2011-2022 走看看