ToolbarWidgetWrapper.java revision fe6d57c366ba78295d3320cb73512f02876eed61
1e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell/* 2e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Copyright (C) 2014 The Android Open Source Project 3e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 4e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * you may not use this file except in compliance with the License. 6e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * You may obtain a copy of the License at 7e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 8e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 9e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 10e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Unless required by applicable law or agreed to in writing, software 11e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * See the License for the specific language governing permissions and 14e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * limitations under the License. 15e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell */ 16e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 17e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 18e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellpackage com.android.internal.widget; 19e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 20e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.animation.Animator; 21e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.animation.AnimatorListenerAdapter; 22e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.app.ActionBar; 23e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.Context; 24e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.res.TypedArray; 25e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.graphics.drawable.Drawable; 26e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.os.Parcelable; 2707a74548ae5c1e064508cb1c79ac34de1142b240Adam Powellimport android.text.TextUtils; 28e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.Log; 29e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.SparseArray; 3022a117d1b60869ed36d125796396f190b4b002fbAlan Viveretteimport android.util.TypedValue; 3122a117d1b60869ed36d125796396f190b4b002fbAlan Viveretteimport android.view.ContextThemeWrapper; 326790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powellimport android.view.Gravity; 33e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.LayoutInflater; 34e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Menu; 35e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.View; 36e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.ViewGroup; 37e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Window; 38e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.ActionMenuPresenter; 39e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.AdapterView; 40e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Spinner; 41e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.SpinnerAdapter; 42e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Toolbar; 43e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.R; 44e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.ActionMenuItem; 45e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuBuilder; 46e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuPresenter; 47e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 48e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell/** 49e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Internal class used to interact with the Toolbar widget without 50e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * exposing interface methods to the public API. 51e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 52e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * <p>ToolbarWidgetWrapper manages the differences between Toolbar and ActionBarView 53e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * so that either variant acting as a 54e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * {@link com.android.internal.app.WindowDecorActionBar WindowDecorActionBar} can behave 55e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * in the same way.</p> 56e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 57e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * @hide 58e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell */ 59e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellpublic class ToolbarWidgetWrapper implements DecorToolbar { 60e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private static final String TAG = "ToolbarWidgetWrapper"; 61e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 62e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private static final int AFFECTS_LOGO_MASK = 63e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO; 64e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 65e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Toolbar mToolbar; 66e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 67e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private int mDisplayOpts; 68e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private View mTabView; 69e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Spinner mSpinner; 70e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private View mCustomView; 71e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 72e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mIcon; 73e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mLogo; 74e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mNavIcon; 75e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 76e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mTitleSet; 77e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private CharSequence mTitle; 78e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private CharSequence mSubtitle; 79e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private CharSequence mHomeDescription; 80e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 81e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Window.Callback mWindowCallback; 82e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mMenuPrepared; 83e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private ActionMenuPresenter mActionMenuPresenter; 84e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 856790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; 86e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private int mDefaultNavigationContentDescription = 0; 8730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar private Drawable mDefaultNavigationIcon; 886790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 892aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell public ToolbarWidgetWrapper(Toolbar toolbar, boolean style) { 90e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar this(toolbar, style, R.string.action_bar_up_description); 91e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 92e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 93e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar public ToolbarWidgetWrapper(Toolbar toolbar, boolean style, 94e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar int defaultNavigationContentDescription) { 95e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar = toolbar; 96e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 9707a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell mTitle = toolbar.getTitle(); 9807a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell mSubtitle = toolbar.getSubtitle(); 996192b07bdc81072fe8d8579b2625a9ba3999a3a0Adam Powell mTitleSet = mTitle != null; 10030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar final TypedArray a = toolbar.getContext().obtainStyledAttributes(null, 10130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar R.styleable.ActionBar, R.attr.actionBarStyle, 0); 10230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); 1032aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (style) { 1042aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final CharSequence title = a.getText(R.styleable.ActionBar_title); 1052aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (!TextUtils.isEmpty(title)) { 1062aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setTitle(title); 1072aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 108e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1092aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final CharSequence subtitle = a.getText(R.styleable.ActionBar_subtitle); 1102aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (!TextUtils.isEmpty(subtitle)) { 1112aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setSubtitle(subtitle); 1122aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 113e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1142aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final Drawable logo = a.getDrawable(R.styleable.ActionBar_logo); 1152aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (logo != null) { 1162aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setLogo(logo); 1172aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 118e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1192aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final Drawable icon = a.getDrawable(R.styleable.ActionBar_icon); 1202aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (icon != null) { 1212aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setIcon(icon); 1222aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 12330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar if (mDefaultNavigationIcon != null) { 12430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar setNavigationIcon(mDefaultNavigationIcon); 1252aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 1262aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setDisplayOptions(a.getInt(R.styleable.ActionBar_displayOptions, 0)); 127e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1282aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int customNavId = a.getResourceId( 1292aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_customNavigationLayout, 0); 1302aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (customNavId != 0) { 1312aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setCustomView(LayoutInflater.from(mToolbar.getContext()).inflate(customNavId, 1322aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar, false)); 1332aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setDisplayOptions(mDisplayOpts | ActionBar.DISPLAY_SHOW_CUSTOM); 1342aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 135e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1362aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0); 1372aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (height > 0) { 1382aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final ViewGroup.LayoutParams lp = mToolbar.getLayoutParams(); 1392aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell lp.height = height; 1402aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setLayoutParams(lp); 1412aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 142e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1432aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int contentInsetStart = a.getDimensionPixelOffset( 1442aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_contentInsetStart, -1); 1452aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int contentInsetEnd = a.getDimensionPixelOffset( 1462aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_contentInsetEnd, -1); 1472aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (contentInsetStart >= 0 || contentInsetEnd >= 0) { 1482aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setContentInsetsRelative(Math.max(contentInsetStart, 0), 1492aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell Math.max(contentInsetEnd, 0)); 1502aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 151e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1522aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int titleTextStyle = a.getResourceId(R.styleable.ActionBar_titleTextStyle, 0); 1532aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (titleTextStyle != 0) { 1542aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setTitleTextAppearance(mToolbar.getContext(), titleTextStyle); 1552aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 156ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell 1572aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int subtitleTextStyle = a.getResourceId( 1582aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_subtitleTextStyle, 0); 1592aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (subtitleTextStyle != 0) { 1602aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setSubtitleTextAppearance(mToolbar.getContext(), subtitleTextStyle); 1612aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 162ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell 16322a117d1b60869ed36d125796396f190b4b002fbAlan Viverette final int popupTheme = a.getResourceId(R.styleable.ActionBar_popupTheme, 0); 16422a117d1b60869ed36d125796396f190b4b002fbAlan Viverette if (popupTheme != 0) { 16522a117d1b60869ed36d125796396f190b4b002fbAlan Viverette mToolbar.setPopupTheme(popupTheme); 16622a117d1b60869ed36d125796396f190b4b002fbAlan Viverette } 167af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } else { 168af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell mDisplayOpts = detectDisplayOptions(); 1692aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 17030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar a.recycle(); 171e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 172e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setDefaultNavigationContentDescription(defaultNavigationContentDescription); 173e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mHomeDescription = mToolbar.getNavigationContentDescription(); 1747901b2a54981b769bf27852c41ce612871a8e019Adam Powell 175e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 176e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final ActionMenuItem mNavItem = new ActionMenuItem(mToolbar.getContext(), 177e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 0, android.R.id.home, 0, 0, mTitle); 178e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 179e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onClick(View v) { 180e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mWindowCallback != null && mMenuPrepared) { 181e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mWindowCallback.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, mNavItem); 182e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 183e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 184e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 185e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 186e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 187e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar @Override 188e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar public void setDefaultNavigationContentDescription(int defaultNavigationContentDescription) { 189e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (defaultNavigationContentDescription == mDefaultNavigationContentDescription) { 190e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar return; 191e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 192e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mDefaultNavigationContentDescription = defaultNavigationContentDescription; 193e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (TextUtils.isEmpty(mToolbar.getNavigationContentDescription())) { 194e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setNavigationContentDescription(mDefaultNavigationContentDescription); 195e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 196e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 197e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 198af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell private int detectDisplayOptions() { 199af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell int opts = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | 200af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell ActionBar.DISPLAY_USE_LOGO; 201af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell if (mToolbar.getNavigationIcon() != null) { 202af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell opts |= ActionBar.DISPLAY_HOME_AS_UP; 20330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = mToolbar.getNavigationIcon(); 204af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } 205af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell return opts; 206af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } 207af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell 208e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 209e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public ViewGroup getViewGroup() { 210e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar; 211e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 212e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 213e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 214e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public Context getContext() { 215e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getContext(); 216e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 217e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 218e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 219e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isSplit() { 220e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return false; 221e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 222e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 223e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 224e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasExpandedActionView() { 225e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.hasExpandedActionView(); 226e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 227e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 228e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 229e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void collapseActionView() { 230e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.collapseActionView(); 231e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 232e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 233e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 234e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setWindowCallback(Window.Callback cb) { 235e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mWindowCallback = cb; 236e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 237e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 238e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 239e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setWindowTitle(CharSequence title) { 240e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // "Real" title always trumps window title. 241e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (!mTitleSet) { 242e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setTitleInt(title); 243e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 244e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 245e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 246e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 247e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public CharSequence getTitle() { 248e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getTitle(); 249e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 250e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 251e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 252e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setTitle(CharSequence title) { 253e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTitleSet = true; 254e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setTitleInt(title); 255e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 256e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 257e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private void setTitleInt(CharSequence title) { 258e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTitle = title; 259e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 260e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(title); 261e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 262e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 263e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 264e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 265e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public CharSequence getSubtitle() { 266e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getSubtitle(); 267e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 268e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 269e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 270e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSubtitle(CharSequence subtitle) { 271e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSubtitle = subtitle; 272e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 273e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(subtitle); 274e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 275e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 276e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 277e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 278e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void initProgress() { 279e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Log.i(TAG, "Progress display unsupported"); 280e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 281e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 282e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 283e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void initIndeterminateProgress() { 284e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Log.i(TAG, "Progress display unsupported"); 285e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 286e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 287e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 288e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean canSplit() { 289e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return false; 290e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 291e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 292e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 293e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitView(ViewGroup splitView) { 294e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 295e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 296e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 297e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitToolbar(boolean split) { 298e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (split) { 299e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell throw new UnsupportedOperationException("Cannot split an android.widget.Toolbar"); 300e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 301e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 302e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 303e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 304e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitWhenNarrow(boolean splitWhenNarrow) { 305e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // Ignore. 306e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 307e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 308e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 309e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasIcon() { 310e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mIcon != null; 311e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 312e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 313e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 314e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasLogo() { 315e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mLogo != null; 316e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 317e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 318e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 319e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setIcon(int resId) { 320e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setIcon(resId != 0 ? getContext().getDrawable(resId) : null); 321e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 322e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 323e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 324e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setIcon(Drawable d) { 325e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mIcon = d; 326e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 327e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 328e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 329e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 330e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setLogo(int resId) { 331e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setLogo(resId != 0 ? getContext().getDrawable(resId) : null); 332e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 333e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 334e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 335e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setLogo(Drawable d) { 336e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mLogo = d; 337e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 338e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 339e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 340e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private void updateToolbarLogo() { 341e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Drawable logo = null; 342e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_HOME) != 0) { 343e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_USE_LOGO) != 0) { 344e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell logo = mLogo != null ? mLogo : mIcon; 345e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 346e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell logo = mIcon; 347e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 348e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 349e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setLogo(logo); 350e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 351e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 352e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 353e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean canShowOverflowMenu() { 354e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.canShowOverflowMenu(); 355e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 356e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 357e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 358e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isOverflowMenuShowing() { 359e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isOverflowMenuShowing(); 360e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 361e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 362e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 363e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isOverflowMenuShowPending() { 364e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isOverflowMenuShowPending(); 365e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 366e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 367e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 368e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean showOverflowMenu() { 369e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.showOverflowMenu(); 370e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 371e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 372e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 373e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hideOverflowMenu() { 374e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.hideOverflowMenu(); 375e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 376e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 377e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 378e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setMenuPrepared() { 379e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mMenuPrepared = true; 380e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 381e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 382e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 383e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setMenu(Menu menu, MenuPresenter.Callback cb) { 384e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mActionMenuPresenter == null) { 385e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter = new ActionMenuPresenter(mToolbar.getContext()); 386e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter); 387e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 388e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter.setCallback(cb); 389e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setMenu((MenuBuilder) menu, mActionMenuPresenter); 390e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 391e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 392e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 393e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void dismissPopupMenus() { 394e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.dismissPopupMenus(); 395e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 396e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 397e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 398e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDisplayOptions() { 399e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mDisplayOpts; 400e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 401e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 402e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 403e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setDisplayOptions(int newOpts) { 404e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final int oldOpts = mDisplayOpts; 405e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final int changed = oldOpts ^ newOpts; 406e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mDisplayOpts = newOpts; 407e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (changed != 0) { 408e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 409e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 410e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar updateHomeAccessibility(); 411e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 41230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 413e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 414e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 415e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & AFFECTS_LOGO_MASK) != 0) { 416e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 417e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 418e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 419e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 420e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 421e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(mTitle); 422e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(mSubtitle); 423e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 424e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(null); 425e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(null); 426e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 427e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 428e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 429e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomView != null) { 430e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 431e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.addView(mCustomView); 432e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 433e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.removeView(mCustomView); 434e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 435e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 436e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 437e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 438e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 439e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 440e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell public void setEmbeddedTabView(ScrollingTabContainerView tabView) { 441e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null && mTabView.getParent() == mToolbar) { 442e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.removeView(mTabView); 443e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 444e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTabView = tabView; 445e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (tabView != null && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) { 446e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.addView(mTabView, 0); 447e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams(); 448e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.width = ViewGroup.LayoutParams.WRAP_CONTENT; 449e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; 450e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.gravity = Gravity.START | Gravity.BOTTOM; 451e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell tabView.setAllowCollapse(true); 452e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 453e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 454e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 455e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 456e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasEmbeddedTabs() { 457e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mTabView != null; 458e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 459e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 460e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 461e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isTitleTruncated() { 462e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isTitleTruncated(); 463e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 464e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 465e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 466e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setCollapsible(boolean collapsible) { 467360c1d89227570510de7bb11195c986300488464Adam Powell mToolbar.setCollapsible(collapsible); 468e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 469e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 470e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 471e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setHomeButtonEnabled(boolean enable) { 472e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // Ignore 473e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 474e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 475e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 476e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getNavigationMode() { 4776790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell return mNavigationMode; 478e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 479e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 480e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 481e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationMode(int mode) { 4826790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell final int oldMode = mNavigationMode; 4836790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell if (mode != oldMode) { 4846790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell switch (oldMode) { 4856790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_LIST: 4866790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell if (mSpinner != null && mSpinner.getParent() == mToolbar) { 4876790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mToolbar.removeView(mSpinner); 4886790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 4896790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 490e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell case ActionBar.NAVIGATION_MODE_TABS: 491e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null && mTabView.getParent() == mToolbar) { 492e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.removeView(mTabView); 493e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 494e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell break; 4956790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 4966790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 4976790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mNavigationMode = mode; 4986790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 4996790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell switch (mode) { 5006790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_STANDARD: 5016790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 5026790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_LIST: 5036790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ensureSpinner(); 5046790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mToolbar.addView(mSpinner, 0); 5056790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 5066790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_TABS: 507e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null) { 508e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.addView(mTabView, 0); 509e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams(); 510e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.width = ViewGroup.LayoutParams.WRAP_CONTENT; 511e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; 512e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.gravity = Gravity.START | Gravity.BOTTOM; 513e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 514e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell break; 5156790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell default: 5166790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell throw new IllegalArgumentException("Invalid navigation mode " + mode); 5176790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 518e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 519e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 520e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 5216790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell private void ensureSpinner() { 522e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mSpinner == null) { 523e178c93ff5457962cc694f44729dfa633de53f9bAlan Viverette mSpinner = new Spinner(getContext(), null, R.attr.actionDropDownStyle); 5246790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell Toolbar.LayoutParams lp = new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 5256790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL); 5266790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mSpinner.setLayoutParams(lp); 527e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 5286790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 5296790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 5306790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell @Override 5316790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell public void setDropdownParams(SpinnerAdapter adapter, 5326790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell AdapterView.OnItemSelectedListener listener) { 5336790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ensureSpinner(); 534e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setAdapter(adapter); 535e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setOnItemSelectedListener(listener); 536e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 537e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 538e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 539e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setDropdownSelectedPosition(int position) { 540e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mSpinner == null) { 541e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell throw new IllegalStateException( 542e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell "Can't set dropdown selected position without an adapter"); 543e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 544e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setSelection(position); 545e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 546e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 547e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 548e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDropdownSelectedPosition() { 549e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mSpinner != null ? mSpinner.getSelectedItemPosition() : 0; 550e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 551e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 552e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 553e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDropdownItemCount() { 554e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mSpinner != null ? mSpinner.getCount() : 0; 555e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 556e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 557e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 558e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setCustomView(View view) { 559e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mCustomView != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 560e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.removeView(mCustomView); 561e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 562e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mCustomView = view; 563e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (view != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 564e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.addView(mCustomView); 565e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 566e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 567e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 568e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 569e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public View getCustomView() { 570e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mCustomView; 571e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 572e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 573e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 574e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void animateToVisibility(int visibility) { 575e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (visibility == View.GONE) { 5762bbad0cddce213ffd3d1e0909f2dc74dd0038ba7Yigit Boyar mToolbar.animate().alpha(0) 577e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell .setListener(new AnimatorListenerAdapter() { 578e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mCanceled = false; 579e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 580e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationEnd(Animator animation) { 581e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (!mCanceled) { 582e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setVisibility(View.GONE); 583e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 584e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 585e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 586e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 587e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationCancel(Animator animation) { 588e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mCanceled = true; 589e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 590e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 591e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else if (visibility == View.VISIBLE) { 5922bbad0cddce213ffd3d1e0909f2dc74dd0038ba7Yigit Boyar mToolbar.animate().alpha(1) 593e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell .setListener(new AnimatorListenerAdapter() { 594e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 595e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationStart(Animator animation) { 596e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setVisibility(View.VISIBLE); 597e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 598e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 599e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 600e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 601e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 602e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 603e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationIcon(Drawable icon) { 604e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mNavIcon = icon; 60530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 606e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 607e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 608e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 609e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationIcon(int resId) { 6106bb10554ba3a0b6127402951a477412d961d1072Adam Powell setNavigationIcon(resId != 0 ? mToolbar.getContext().getDrawable(resId) : null); 611e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 612e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 613e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 61430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar public void setDefaultNavigationIcon(Drawable defaultNavigationIcon) { 61530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar if (mDefaultNavigationIcon != defaultNavigationIcon) { 61630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = defaultNavigationIcon; 61730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 61830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 61930f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 62030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar 62130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar private void updateNavigationIcon() { 62230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 62330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mToolbar.setNavigationIcon(mNavIcon != null ? mNavIcon : mDefaultNavigationIcon); 62430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } else { 62530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mToolbar.setNavigationIcon(null); 62630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 62730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 62830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar 62930f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar @Override 630e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationContentDescription(CharSequence description) { 631e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mHomeDescription = description; 632e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar updateHomeAccessibility(); 633e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 634e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 635e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 636e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationContentDescription(int resId) { 637e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setNavigationContentDescription(resId == 0 ? null : getContext().getString(resId)); 638e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 639e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 640e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private void updateHomeAccessibility() { 641e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 642e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (TextUtils.isEmpty(mHomeDescription)) { 643e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mToolbar.setNavigationContentDescription(mDefaultNavigationContentDescription); 644e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } else { 645e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mToolbar.setNavigationContentDescription(mHomeDescription); 646e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 647e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 648e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 649e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 650e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 651e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void saveHierarchyState(SparseArray<Parcelable> toolbarStates) { 652e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.saveHierarchyState(toolbarStates); 653e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 654e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 655e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 656e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void restoreHierarchyState(SparseArray<Parcelable> toolbarStates) { 657e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.restoreHierarchyState(toolbarStates); 658e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 659e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 660fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 661fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setBackgroundDrawable(Drawable d) { 662fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar //noinspection deprecation 663fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setBackgroundDrawable(d); 664fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 665fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 666fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 667fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public int getHeight() { 668fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getHeight(); 669fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 670fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 671fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 672fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setVisibility(int visible) { 673fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setVisibility(visible); 674fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 675fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 676fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 677fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public int getVisibility() { 678fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getVisibility(); 679fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 680fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 681fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 682fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, 683fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar MenuBuilder.Callback menuBuilderCallback) { 684fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback); 685fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 686fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 687fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 688fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public Menu getMenu() { 689fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getMenu(); 690fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 691fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 692e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell} 693