• 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;
        }
  • 相关阅读:
    浅析Mybatis如何返回Map结构、@MapKey()的使用、返回List<Map<K,V>> 结构类型数据
    浅析SpringBoot缓存原理探究、SpringCache常用注解介绍及如何集成Redis
    浅析springboot的@Cacheable加入缓存@CacheEvict清除缓存及spEL表达式编写key
    对比 ASP.NET Core 中的 HttpContext.Features 与 HttpContext.Items
    在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)
    使用 Web Compiler 2022+
    实战案例:Sql client使用sql操作FlinkCDC2Hudi、支持从savepoint恢复hudi作业
    Apache Hudi核心概念一网打尽
    Apache Hudi的索引类型及应用场景
    Flink如何设置RocksDB日志:How to Configure RocksDB Logging for Advanced Troubleshooting
  • 原文地址:https://www.cnblogs.com/onelikeone/p/7582676.html
Copyright © 2020-2023  润新知