I have the following activity layout:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" style="@style/DrawerLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".ui.activity.MyActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="@dimen/app_bar_height" android:background="@color/black" android:fitsSystemWindows="true" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:collapsedTitleTextAppearance="@style/ToolbarTitle" app:contentScrim="@color/primary" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_top" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" app:theme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <my.package.ui.widget.MyHeaderWidget android:id="@+id/deal_header" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="my.package.ui.activity.MyHeaderBehavior"/> <include layout="@layout/content_list"/> </android.support.design.widget.CoordinatorLayout> <include layout="@layout/navigation_view"/> </android.support.v4.widget.DrawerLayout>
It is used to have a collapsing toolbar + the navigation drawer + an animation for a title an sub title (in the header widget). Everything is good until I try to start the ActionMode to enable multi-selection.
I do it by calling:
mActionMode = mCollapsingToolbarLayout.startActionMode(mActionModeCallback);
The problem is that I end having two actionbars (with two arrows):
The black one is the one that I was expecting to be there the white one is added when I start the ActionMode.
Am I doing something wrong?
EDIT
in the AndroidMaifest
<activity android:name=".ui.activity.MyActivity" android:label="@string/title_activity" android:theme="@style/MyTheme"> </activity>
In the styles.xml
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowBackground">@drawable/window_background_gray</item> <item name="android:colorBackground">@color/app_background</item> <item name="displayOptions">showHome|homeAsUp|showTitle</item> <item name="android:icon">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="colorPrimary">@color/primary</item> <item name="colorAccent">@color/accent</item> <item name="colorPrimaryDark">@color/primaryDark</item> <item name="android:textAppearanceButton">@style/Theme.ButtonTextAppearance</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
4 Answers
Answers 1
You will need to tell the system that you use your custom toolbar instead. To do so, in the onCreate of your Activity, simply add the following :
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); //Then get a reference to your Toolbar Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_top); //Tell the system to use yours setSupportActionBar(toolbar); }
Here my Activity extends AppCompatActivity
which is why I'm using setSupportActionBar
, but you will find the same method for regular Activity setActionBar
In addition, you'll need to create a style (under res/values/styles.xml) :
<style name="MyNoAppBarTheme" parent="AppTheme"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
or in case you don't already override your AppTheme :
<style name="MyNoAppBarTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
and finally set this theme in your manifest for that particular activity :
<activity android:name=".ui.activities.YourActivity" android:label="@string/app_name" android:theme="@style/MyNoAppBarTheme" />
EDIT : After you edited your question, it seems indeed that the actionMode is the issue here. As explained on this answer, make sure you're using the correct import, as well as using the startSupportActionMode
instead of startActionMode
Answers 2
Try adding the following in your theme in styles.xml -
<item name="android:windowActionBarOverlay">false</item> <item name="windowActionBarOverlay">false</item> <item name="windowActionModeOverlay">true</item>
Answers 3
Your parent theme has to be some of NoAction bar themes
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="colorControlNormal">@color/colorPrimary</item> <item name="colorControlActivated">@color/colorAccent</item> </style>
Answers 4
If you're using a Toolbar these 3 lines are enough:
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="windowActionModeOverlay">true</item> <!-- This is the important line --> </style>
Remember to add that in both files styles and styles(v21)
0 comments:
Post a Comment