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;
        }
  • 相关阅读:
    Access control configuration prevents your request from being allo
    利用Squid + DNSPOD 搭建CDN服务器
    Nginx Location配置总结
    Weblogic下启用Gzip压缩
    Java 8 的新特性和改进总览
    Java 8 中 HashMap 的性能提升
    测试 Nginx 作为前端下各种模式的性能
    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息
    ProGuard使用简介
    Java Web应用软件保护方法
  • 原文地址:https://www.cnblogs.com/onelikeone/p/7582676.html
Copyright © 2011-2022 走看看