Android控制选项菜单(OptionsMenu)菜单项的Enable和Visible

版权声明:此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途。网络媒体、传统媒体或个人转载请注明出处和链接,否则属于侵权行为。 https://blog.csdn.net/nny886/article/details/82990868

以设置Enable为例(Visable类似,将Enabled单词替换成Visible就可以实现菜单项的显、隐),上实例代码(附少量必要的说明)。

     @Override
public boolean onCreateOptionsMenu(Menu menu) {//只在创建菜单的时候运行一次
    super.onCreateOptionsMenu(menu);
    SubMenu meu_File = menu.addSubMenu("文件");
    SubMenu meu_Survey = menu.addSubMenu("测量");
    SubMenu meu_Browse = menu.addSubMenu("查看");
    SubMenu meu_Preprocessing = menu.addSubMenu("预处理");
    //Setting the secondary level menu
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_NewProject, 1, "新建项目");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_OpenProject, 2, "打开项目");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_CloseProject, 3, "关闭项目");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_DeleteProject, 4, "删除项目");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_NewObservationDocument, 5, "新建观测文件");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_OpenObservationDocument, 6, "打开观测文件");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_CloseObservationDocument, 7, "关闭观测文件");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_DeleteObservationDocument, 8, "删除观测文件");
    meu_File.add(INT_MENU_FILE, INT_MENU_FILE_Exit, 9, "退  出");

    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_LevelingObservation, 1, "水准观测");
    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_Leveling_With_Power_Continued, 2, "断电续测");
    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_EditMeasuringSectionInformation, 3, "修改测段信息");
    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_SegmentDataInvalidation, 6, "测段数据作废");
    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_DetectionIntermission, 9, "检测间歇点");
    meu_Survey.add(INT_MENU_SURVEY, INT_MENU_SURVEY_iAngleInspection, 10, "i角检校");

    meu_Browse.add(INT_MENU_BROWSE, INT_MENU_BROWSE_ViewEverySegmentData, 1, "查看各测段数据");
    meu_Browse.add(INT_MENU_BROWSE, INT_MENU_BROWSE_ViewCurrentSegmentData, 2, "查看当前测段数据");
    meu_Browse.add(INT_MENU_BROWSE, INT_MENU_BROWSE_ViewIAngeleRecord, 3, "查看i角记录");
    meu_Browse.add(INT_MENU_BROWSE, INT_MENU_BROWSE_ViewAdjustmentResult, 4, "查看平差成果");

    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_ExportObservationBook, 1, "导出观测手簿");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_ExportSegmentObservationValue, 2, "导出测段观测值");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_ExportSpaceTimeTrajectory, 3, "导出时空轨迹");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_AdjustmentSetting, 4, "平差设置");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_AdjustmentCalculation, 5, "平差计算");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_AccuracyAssessment, 6, "精度评定");
    meu_Preprocessing.add(INT_MENU_PREPROCESSING, INT_MENU_PREPROCESSING_ExportAdjustmentResult, 7, "导出平差成果");
    //一下代码也可以在创建菜单时实现相关效果(按组设置,如INT_MENU_SURVEY即为一个组名)
    //meu_Survey.setGroupEnabled(INT_MENU_SURVEY, false);
    //meu_Browse.setGroupEnabled(INT_MENU_BROWSE, false);
    //meu_Preprocessing.setGroupEnabled(INT_MENU_PREPROCESSING, false);
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {//在创建菜单时或点击菜单(在菜单项弹出之前的菜单符号)时均运行
    super.onPrepareOptionsMenu(menu);
    if (strCurrentProjectName.equals("")) {
        //"0" 是子菜单序号(序号从0开始排),这里代表 "meu_File" ,其他类推
        //"4" (序号从0开始排,与设定的常数值或菜单Order值不一定一致)代表 "INT_MENU_FILE_NewObservationDocument",这里是"meu_File"的二级子菜单,其他数字类推
        menu.getItem(0).getSubMenu().getItem(4).setEnabled(false);//先获取子菜单,在获取子菜单下的菜单项
        menu.getItem(0).getSubMenu().getItem(5).setEnabled(false);
        menu.getItem(0).getSubMenu().getItem(6).setEnabled(false);
        menu.getItem(0).getSubMenu().getItem(7).setEnabled(false);
        menu.getItem(1).getSubMenu().setGroupEnabled(INT_MENU_SURVEY, false);
        menu.getItem(2).getSubMenu().setGroupEnabled(INT_MENU_BROWSE, false);
        menu.getItem(2).getSubMenu().setGroupEnabled(INT_MENU_PREPROCESSING, false);
    }else{
        menu.getItem(0).getSubMenu().getItem(4).setEnabled(true);
        menu.getItem(0).getSubMenu().getItem(5).setEnabled(true);
        menu.getItem(0).getSubMenu().getItem(6).setEnabled(true);
        menu.getItem(0).getSubMenu().getItem(7).setEnabled(true);
        if(strCurrentRecordFile.equals("")){
            menu.getItem(1).getSubMenu().setGroupEnabled(INT_MENU_SURVEY, false);
            menu.getItem(2).getSubMenu().setGroupEnabled(INT_MENU_BROWSE, false);
            menu.getItem(2).getSubMenu().setGroupEnabled(INT_MENU_PREPROCESSING, false);
        }else{
            menu.getItem(1).getSubMenu().setGroupEnabled(INT_MENU_SURVEY, true);
            menu.getItem(2).getSubMenu().setGroupEnabled(INT_MENU_BROWSE, true);
            menu.getItem(3).getSubMenu().setGroupEnabled(INT_MENU_PREPROCESSING, true);
        }
    }
    return true;
}

猜你喜欢

转载自blog.csdn.net/nny886/article/details/82990868
今日推荐