ActionMode背景不适用于使用工具栏设置支持ActionBar

时间:2016-10-12 10:14:44

标签: android background toolbar actionmode

我的动作模式背景风格不起作用,因为我使用ToolBar作为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>

styles.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>

我已经尝试了这个solution,但仍然无效。

This is my whole project

有谁知道怎么解决?谢谢!

2 个答案:

答案 0 :(得分:1)

我的同事解决了这个问题,只需删除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">

答案 1 :(得分:0)

就我而言,问题出在工具栏主题中。 很奇怪,但是如果工具栏主题是Theme.AppCompat。(any),而不是ThemeOverlay.AppCompat。(any),则ActionMode的样式不起作用。

也许会帮助某人。