Фон ActionMode не работает с установленной поддержкой ActionBar с панелью инструментов

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

часть MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    startActionMode(new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
            return true;
        }

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

        @Override
        public void onDestroyActionMode(ActionMode actionMode) {

        }
    });
}

макет

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.dowob.testactionmodestyle.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:id="@+id/textView"/>

    </LinearLayout>
</LinearLayout>

часть манифеста

<activity android:name=".MainActivity"
    android:theme="@style/MainActivityTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

стили.xml

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

    <style name="MainActivityTheme" parent="AppTheme">

        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>

        <item name="colorPrimary">#FF0000</item>
        <item name="colorPrimaryDark">#FF00FF</item>

        <item name="actionModeStyle">@style/ActionMode</item>
        <item name="android:actionModeStyle">@style/ActionMode</item>
    </style>

    <style name="ActionMode" parent="Widget.AppCompat.ActionMode">
        <item name="android:background">@color/actionModeBg</item>
        <item name="background">@color/actionModeBg</item>
    </style>

</resources>

Я пробовал это решение, но все равно не работает.

Это весь мой проект.

Кто знает как решить?? Спасибо!


person aiueoH    schedule 12.10.2016    source источник


Ответы (2)


Я решаю эту проблему с помощью своего коллеги, просто удаляю тему AppBarLayout, и все работает нормально.

До:

<android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme">

После :

<android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
person aiueoH    schedule 14.10.2016

В моем случае проблема была в теме панели инструментов. Странно, но стиль для ActionMode не работает, если тема панели инструментов Theme.AppCompat.(любая), а не ThemeOverlay.AppCompat.(любая).

Может быть, это поможет кому-то.

person Dimezis    schedule 13.08.2018