Контекстная панель действий не перекрывает мою панель инструментов

Я создал действие и установил панель инструментов в качестве панели действий, которую я разместил внизу.

Внутри этого действия у меня есть список, содержащий некоторые данные.

Проблема в том, что когда я долго нажимаю на элемент списка, контекстная панель действий появляется вверху, а не перекрывает мою панель инструментов, которая расположена внизу.

моя тема активности

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Base application theme. -->
<style name="myActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowActionModeOverlay">true</item>
</style>

my toolbar

<android.support.v7.widget.Toolbar
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:id="@+id/toorbar"
    android:background="@android:color/white"
    android:layout_gravity="bottom">
</android.support.v7.widget.Toolbar>

мои действия

protected void onCreate(Bundle savedInstanceState){
    ToolBar toolbar =(ToolBar) findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)
}

Что мне сделать, чтобы CAB накладывался на мою панель инструментов?

ИЗМЕНИТЬ

Это метод onCreateActionMode в моем классе, который обрабатывает длинные клики.

private class Selector implements AbsListView.MultiChoiceModeListener{

    @Override
    public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
        mode.getMenuInflater().inflate(R.menu.my_activity_menu,menu);
        toolbar.setVisibility(View.VISIBLE);
        return true;
    }

person Edijae Crusar    schedule 17.11.2015    source источник
comment
почему вы показываете панель инструментов в onCreateActionMode, используя toolbar.setVisibility(View.VISIBLE); ??   -  person Rajesh    schedule 17.11.2015
comment
Вам нужно удалить эту строку   -  person Rajesh    schedule 17.11.2015
comment
@RajeshJadav Я хочу, чтобы панель инструментов (теперь моя панель действий) была видна только при длительном нажатии на элемент списка. затем я устанавливаю его на INVISIBLE, когда действие было выполнено   -  person Edijae Crusar    schedule 17.11.2015
comment
На самом деле вам не нужно этого делать. когда вы используете windowActionModeOverlay для true. Контекстная панель действий заменяет панель инструментов, но вы показываете панель инструментов в onCreateActionMode, которая не требуется. когда вы нажимаете кнопку «Готово» на панели действий, панель инструментов автоматически заменяет панель действий.   -  person Rajesh    schedule 17.11.2015
comment
@RajeshJadav Я не знаю, почему этот CAB все еще думает, что у меня есть панель действий вверху! представьте, даже после удаления этой строки toolbar.setVisibliity. он по-прежнему отображается в верхней части моей активности   -  person Edijae Crusar    schedule 17.11.2015
comment
У @RajeshJadav есть другие предложения босса?   -  person Edijae Crusar    schedule 17.11.2015
comment
можешь показать скриншот своего приложения?   -  person Rajesh    schedule 17.11.2015


Ответы (5)


Если вы хотите, чтобы контекстное ActionBar перекрывало Toolbar, используйте это

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

вместо

<item name="android:windowActionModeOverlay">true</item>
person Rajesh    schedule 17.11.2015
comment
я пробовал удалить android namespace, но он все еще отображается вверху, а не перекрывает мою панель инструментов внизу - person Edijae Crusar; 17.11.2015
comment
ваше редактирование - это именно то, что я использовал в своем вопросе, и проблема все еще возникает - person Edijae Crusar; 17.11.2015
comment
нет Родительская тема отличается при редактировании. это Theme.AppCompat.NoActionBar вместо Theme.AppCompat.Light.NoActionBar, а также необходимо удалить ‹item name=windowActionBar›false‹/item› - person Rajesh; 17.11.2015
comment
проблема все еще появляется даже после изменения родителя на Theme.AppCompact.NoActionBar - person Edijae Crusar; 17.11.2015
comment
какую активность вы используете AppCompatActivity? - person Rajesh; 17.11.2015
comment
моя деятельность распространяется ActionBarActivity (кстати, она помечена как устаревшая) - person Edijae Crusar; 17.11.2015
comment
пожалуйста, проверьте, расширив AppCompatActivity вместо ActionBarActivity - person Rajesh; 17.11.2015
comment
это не решает мою проблему. см. мой EDIT о том, как я реализовал oncreateactionmode - person Edijae Crusar; 17.11.2015
comment
Это решает мою проблему точно так же, как я удалил android:windowActionModeOverlay на windowActionModeOverlay, большое спасибо - person kondal; 08.11.2016
comment
@Раджеш Это было давно. Я вижу, что ваш ответ помог многим людям решить одну и ту же проблему, поэтому я приму его. - person Edijae Crusar; 24.04.2018

Это сработало для меня,

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

            <item name="windowNoTitle">true</item>
            <item name="windowActionBar">false</item>
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="windowActionModeOverlay">true</item>

     </style>
person Lins Louis    schedule 11.01.2018

вы можете попробовать эту тему, это может решить вашу проблему.

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

 </style>
person vishal jangid    schedule 17.11.2015
comment
Это не решает проблему. он только изменяет тему/стиль CAB, но не перемещает его вниз, где находится моя панель инструментов - person Edijae Crusar; 17.11.2015

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_primary_dark</item>
        <item name="colorAccent">@color/color_accent</item>

        <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>

        <!-- required for toolbar in prelolipop -->
        <item name="android:windowNoTitle">true</item>
        **<item name="windowActionModeOverlay">true</item>**

    </style>

используйте <item name="windowActionModeOverlay>true</item> для контекстной панели действий для наложения панели инструментов. И удалите, если вы использовали <item name="windowActionBar">false</item>. Это сработало для меня.

person Aman Srivastava    schedule 20.10.2016

Поскольку моя панель инструментов находилась в нижней части активности, решением было создать собственную контекстную панель действий, которая будет накладываться на нее.

Этот проект ниже дал мне преимущество.

https://github.com/afollestad/material-cab

person Edijae Crusar    schedule 25.05.2018