android选项菜单没有完全出现

时间:2016-11-07 11:55:32

标签: android optionmenu

Hehllo, 我是新的android程序员。 我的项目有一个选项菜单,见下文 我的xml菜单代码:

     <?xml version="1.0" encoding="utf-8"?>
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/add_new_media_item_menu"
    android:icon="@drawable/ic_menu_add_clip_normal"
    android:title="@string/editor_add"
    android:showAsAction="ifRoom|withText">
    <menu>
        <item android:id="@+id/menu_item_capture_video"
            android:title="@string/editor_capture_video" />
        <item android:id="@+id/menu_item_capture_image"
            android:title="@string/editor_capture_image" />
        <item android:id="@+id/menu_item_import_video"
            android:title="@string/editor_import_video" />
        <item android:id="@+id/menu_item_import_image"
            android:title="@string/editor_import_image" />
        <item android:id="@+id/menu_item_import_audio"
            android:title="@string/editor_import_audio" />
    </menu>
  </item>

 <!-- Project related menu are always grouped into the more option. -->
 <item android:id="@+id/menu_item_change_aspect_ratio"
    android:title="@string/editor_change_aspect_ratio"
    android:showAsAction="never" />
 <item android:id="@+id/menu_item_edit_project_name"
    android:title="@string/editor_edit_project_name"
    android:showAsAction="never" />
 <item android:id="@+id/menu_item_export_movie"
    android:title="@string/editor_export_movie"
    android:showAsAction="never" />
 <item android:id="@+id/menu_item_delete_project"
    android:title="@string/editor_delete_project"
    android:showAsAction="never" />
 <item android:id="@+id/menu_item_play_exported_movie"
    android:title="@string/editor_play_exported_movie"
    android:showAsAction="never" />
 <item android:id="@+id/menu_item_share_movie"
    android:title="@string/editor_share_movie"
    android:showAsAction="never" />
</menu>

和我的java代码:

       @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.action_bar_menu, menu);
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    final boolean haveProject = (mProject != null);
    final boolean haveMediaItems = haveProject && mProject.getMediaItemCount() > 0;
    menu.findItem(R.id.menu_item_capture_video).setVisible(haveProject);
    menu.findItem(R.id.menu_item_capture_image).setVisible(haveProject);
    menu.findItem(R.id.menu_item_import_video).setVisible(haveProject);
    menu.findItem(R.id.menu_item_import_image).setVisible(haveProject);
    menu.findItem(R.id.menu_item_import_audio).setVisible(haveProject &&
            mProject.getAudioTracks().size() == 0 && haveMediaItems);
    menu.findItem(R.id.menu_item_change_aspect_ratio).setVisible(haveProject &&
            mProject.hasMultipleAspectRatios());
    menu.findItem(R.id.menu_item_edit_project_name).setVisible(haveProject);

    // Check if there is an operation pending or preview is on.
    boolean enableMenu = haveProject;
    if (enableMenu && mPreviewThread != null) {
        // Preview is in progress
        enableMenu = mPreviewThread.isStopped();
        if (enableMenu && mProjectPath != null) {
            enableMenu = !ApiService.isProjectBeingEdited(mProjectPath);
        }
    }

    menu.findItem(R.id.menu_item_export_movie).setVisible(enableMenu && haveMediaItems);
    menu.findItem(R.id.menu_item_delete_project).setVisible(enableMenu);
    menu.findItem(R.id.menu_item_play_exported_movie).setVisible(enableMenu &&
            mProject.getExportedMovieUri() != null);
    menu.findItem(R.id.menu_item_share_movie).setVisible(enableMenu &&
            mProject.getExportedMovieUri() != null);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home: {
            // Returns to project picker if user clicks on the app icon in the action bar.
            final Intent intent = new Intent(this, ProjectsActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
            return true;
        }

        case R.id.menu_item_capture_video: {
            mInsertMediaItemAfterMediaItemId = mProject.getLastMediaItemId();

            // Create parameters for Intent with filename
            final ContentValues values = new ContentValues();
            String videoFilename = DIRECTORY + '/' + getVideoOutputMediaFileTitle() + ".mp4";
            values.put(MediaStore.Video.Media.DATA, videoFilename);
            mCaptureMediaUri = getContentResolver().insert(
                    MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
            final Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mCaptureMediaUri);
            startActivityForResult(intent, REQUEST_CODE_CAPTURE_VIDEO);
            return true;
        }

        case R.id.menu_item_capture_image: {
            mInsertMediaItemAfterMediaItemId = mProject.getLastMediaItemId();

            // Create parameters for Intent with filename
            final ContentValues values = new ContentValues();
            mCaptureMediaUri = getContentResolver().insert(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mCaptureMediaUri);
            startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);
            return true;
        }

        case R.id.menu_item_import_video: {
            mInsertMediaItemAfterMediaItemId = mProject.getLastMediaItemId();
            final Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setData(MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(intent, REQUEST_CODE_IMPORT_VIDEO);
            return true;
        }

        case R.id.menu_item_import_image: {
            mInsertMediaItemAfterMediaItemId = mProject.getLastMediaItemId();
            final Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(intent, REQUEST_CODE_IMPORT_IMAGE);
            return true;
        }

        case R.id.menu_item_import_audio: {
            final Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setData(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(intent, REQUEST_CODE_IMPORT_MUSIC);
            return true;
        }

        case R.id.menu_item_change_aspect_ratio: {
            final ArrayList<Integer> aspectRatiosList = mProject.getUniqueAspectRatiosList();
            final int size = aspectRatiosList.size();
            if (size > 1) {
                final Bundle bundle = new Bundle();
                bundle.putIntegerArrayList(PARAM_ASPECT_RATIOS_LIST, aspectRatiosList);

                // Get the current aspect ratio index
                final int currentAspectRatio = mProject.getAspectRatio();
                int currentAspectRatioIndex = 0;
                for (int i = 0; i < size; i++) {
                    final int aspectRatio = aspectRatiosList.get(i);
                    if (aspectRatio == currentAspectRatio) {
                        currentAspectRatioIndex = i;
                        break;
                    }
                }
                bundle.putInt(PARAM_CURRENT_ASPECT_RATIO_INDEX, currentAspectRatioIndex);
                showDialog(DIALOG_CHOOSE_ASPECT_RATIO_ID, bundle);
            }
            return true;
        }

        case R.id.menu_item_edit_project_name: {
            showDialog(DIALOG_EDIT_PROJECT_NAME_ID);
            return true;
        }

        case R.id.menu_item_delete_project: {
            // Confirm project delete
            showDialog(DIALOG_DELETE_PROJECT_ID);
            return true;
        }

        case R.id.menu_item_export_movie: {
            // Present the user with a dialog to choose export options
            mExportProgress = 0;
            showDialog(DIALOG_EXPORT_OPTIONS_ID);
            return true;
        }

        case R.id.menu_item_play_exported_movie: {
            final Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(mProject.getExportedMovieUri(), "video/*");
            intent.putExtra(MediaStore.EXTRA_FINISH_ON_COMPLETION, false);
            startActivity(intent);
            return true;
        }

        case R.id.menu_item_share_movie: {
            final Intent intent = new Intent(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_STREAM, mProject.getExportedMovieUri());
            intent.setType("video/*");
            startActivity(intent);
            return true;
        }

        default: {
            return false;
        }
    }
}

我的问题是为什么选项菜单显示不正确?

enter image description here

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案