92

従来の に加えてandroid.view.ActionMode、新しいを使用しようとしています。私はそれを表示することができます:android.support.v7.widget.Toolbarandroid.app.ActionBar

toolbar.startActionMode(callback);

問題は、がではなく の上にActionMode表示されることです。それを変更する方法はありますか?ActionBarToolbar

テーマに次のように設定しようとしましたが、何も変わらないようです:

<item name="windowActionModeOverlay">true</item>
4

10 に答える 10

70

アクティビティではなく、ツールバーで開始してください。あなたの活動で:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.startActionMode(mActionModeCallback)

そして、あなたは使用する必要があります

<item name="windowActionModeOverlay">true</item>

アンドレが述べたように、あなたのテーマで。

于 2014-12-08T09:13:51.510 に答える
7

AndroidManifest.xml を見つけて、次にアプリケーションまたはアクティビティ テーマに以下のコードを追加します。

<item name="windowActionModeOverlay">true</item>

以下のようなので:

<style name="WorkTimeListTheme" parent="AppTheme.NoActionBar">
        <item name="windowActionModeOverlay">true</item>
        <item name="actionModeBackground">@color/theme_primary</item>
    </style>
于 2018-12-21T06:51:31.740 に答える
1

上記のすべての方法を試しましたが、まだうまくいきません。そして、以下の方法を試しました。

    private class ActionModeCallback implements ActionMode.Callback {
    @Override
    public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
        actionMode.getMenuInflater().inflate(R.menu.note_find_action, menu);
        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
        ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
        return false;
    }

    @Override
    public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
        return false;
    }

    @Override
    public void onDestroyActionMode(ActionMode actionMode) {
        ((AppCompatActivity) getActivity()).getSupportActionBar().show();
    }
}

ここでは、サポート ライブラリのアクション モードと startSupportActionMode メソッドを使用しました。同時に、与えられた活動のテーマを修正しようと試みました。確かに、うまくいきません。したがって、本当に良い選択肢がない場合は、これを試してみてください。

つい最近、Colorful フレームを使用してアプリの複数のテーマを有効にしていることがわかりました。これにより、コード内のテーマが変更されます。このフレームワークでスタイルを変更しようとすると、うまくいきます。

それがうまくいくことを願っています。

于 2018-01-03T11:46:35.043 に答える