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; 2294283533aba1b8c895728feb40462250a1ebecceDoris Liuimport android.animation.ObjectAnimator; 23e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.app.ActionBar; 24e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.Context; 25e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.content.res.TypedArray; 26e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.graphics.drawable.Drawable; 27e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.os.Parcelable; 2807a74548ae5c1e064508cb1c79ac34de1142b240Adam Powellimport android.text.TextUtils; 29e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.Log; 30e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.util.SparseArray; 316790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powellimport android.view.Gravity; 32e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.LayoutInflater; 33e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Menu; 34e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.View; 35e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.ViewGroup; 36e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.view.Window; 37e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.ActionMenuPresenter; 38e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.AdapterView; 39e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Spinner; 40e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.SpinnerAdapter; 41e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport android.widget.Toolbar; 42e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.R; 43e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.ActionMenuItem; 44e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuBuilder; 45e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellimport com.android.internal.view.menu.MenuPresenter; 46e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 47e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell/** 48e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * Internal class used to interact with the Toolbar widget without 49e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * exposing interface methods to the public API. 50e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 51e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * <p>ToolbarWidgetWrapper manages the differences between Toolbar and ActionBarView 52e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * so that either variant acting as a 53e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * {@link com.android.internal.app.WindowDecorActionBar WindowDecorActionBar} can behave 54e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * in the same way.</p> 55e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * 56e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell * @hide 57e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell */ 58e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powellpublic class ToolbarWidgetWrapper implements DecorToolbar { 59e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private static final String TAG = "ToolbarWidgetWrapper"; 60e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 61e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private static final int AFFECTS_LOGO_MASK = 62e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO; 6394283533aba1b8c895728feb40462250a1ebecceDoris Liu // Default fade duration for fading in/out tool bar. 6494283533aba1b8c895728feb40462250a1ebecceDoris Liu private static final long DEFAULT_FADE_DURATION_MS = 200; 65e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 66e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Toolbar mToolbar; 67e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 68e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private int mDisplayOpts; 69e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private View mTabView; 70e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Spinner mSpinner; 71e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private View mCustomView; 72e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 73e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mIcon; 74e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mLogo; 75e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Drawable mNavIcon; 76e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 77e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mTitleSet; 78e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private CharSequence mTitle; 79e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private CharSequence mSubtitle; 80e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private CharSequence mHomeDescription; 81e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 82e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private Window.Callback mWindowCallback; 83e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mMenuPrepared; 84e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private ActionMenuPresenter mActionMenuPresenter; 85e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 866790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; 87e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private int mDefaultNavigationContentDescription = 0; 8830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar private Drawable mDefaultNavigationIcon; 896790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 902aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell public ToolbarWidgetWrapper(Toolbar toolbar, boolean style) { 91e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar this(toolbar, style, R.string.action_bar_up_description); 92e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 93e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 94e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar public ToolbarWidgetWrapper(Toolbar toolbar, boolean style, 95e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar int defaultNavigationContentDescription) { 96e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar = toolbar; 97e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 9807a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell mTitle = toolbar.getTitle(); 9907a74548ae5c1e064508cb1c79ac34de1142b240Adam Powell mSubtitle = toolbar.getSubtitle(); 1006192b07bdc81072fe8d8579b2625a9ba3999a3a0Adam Powell mTitleSet = mTitle != null; 10124c2a7e736611b257d077f7ce1c0a28563bc8c06Yigit Boyar mNavIcon = mToolbar.getNavigationIcon(); 10230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar final TypedArray a = toolbar.getContext().obtainStyledAttributes(null, 10330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar R.styleable.ActionBar, R.attr.actionBarStyle, 0); 10430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); 1052aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (style) { 1062aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final CharSequence title = a.getText(R.styleable.ActionBar_title); 1072aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (!TextUtils.isEmpty(title)) { 1082aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setTitle(title); 1092aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 110e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1112aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final CharSequence subtitle = a.getText(R.styleable.ActionBar_subtitle); 1122aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (!TextUtils.isEmpty(subtitle)) { 1132aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setSubtitle(subtitle); 1142aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 115e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1162aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final Drawable logo = a.getDrawable(R.styleable.ActionBar_logo); 1172aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (logo != null) { 1182aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setLogo(logo); 1192aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 120e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1212aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final Drawable icon = a.getDrawable(R.styleable.ActionBar_icon); 1222aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (icon != null) { 1232aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setIcon(icon); 1242aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 12524c2a7e736611b257d077f7ce1c0a28563bc8c06Yigit Boyar if (mNavIcon == null && mDefaultNavigationIcon != null) { 12630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar setNavigationIcon(mDefaultNavigationIcon); 1272aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 1282aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setDisplayOptions(a.getInt(R.styleable.ActionBar_displayOptions, 0)); 129e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1302aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int customNavId = a.getResourceId( 1312aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_customNavigationLayout, 0); 1322aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (customNavId != 0) { 1332aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setCustomView(LayoutInflater.from(mToolbar.getContext()).inflate(customNavId, 1342aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar, false)); 1352aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell setDisplayOptions(mDisplayOpts | ActionBar.DISPLAY_SHOW_CUSTOM); 1362aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 137e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1382aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0); 1392aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (height > 0) { 1402aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final ViewGroup.LayoutParams lp = mToolbar.getLayoutParams(); 1412aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell lp.height = height; 1422aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setLayoutParams(lp); 1432aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 144e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1452aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int contentInsetStart = a.getDimensionPixelOffset( 1462aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_contentInsetStart, -1); 1472aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int contentInsetEnd = a.getDimensionPixelOffset( 1482aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_contentInsetEnd, -1); 1492aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (contentInsetStart >= 0 || contentInsetEnd >= 0) { 1502aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setContentInsetsRelative(Math.max(contentInsetStart, 0), 1512aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell Math.max(contentInsetEnd, 0)); 1522aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 153e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 1542aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int titleTextStyle = a.getResourceId(R.styleable.ActionBar_titleTextStyle, 0); 1552aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (titleTextStyle != 0) { 1562aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setTitleTextAppearance(mToolbar.getContext(), titleTextStyle); 1572aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 158ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell 1592aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell final int subtitleTextStyle = a.getResourceId( 1602aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell R.styleable.ActionBar_subtitleTextStyle, 0); 1612aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell if (subtitleTextStyle != 0) { 1622aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell mToolbar.setSubtitleTextAppearance(mToolbar.getContext(), subtitleTextStyle); 1632aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 164ebba5d4edd763b19124b715a0f084d2f00c84a47Adam Powell 16522a117d1b60869ed36d125796396f190b4b002fbAlan Viverette final int popupTheme = a.getResourceId(R.styleable.ActionBar_popupTheme, 0); 16622a117d1b60869ed36d125796396f190b4b002fbAlan Viverette if (popupTheme != 0) { 16722a117d1b60869ed36d125796396f190b4b002fbAlan Viverette mToolbar.setPopupTheme(popupTheme); 16822a117d1b60869ed36d125796396f190b4b002fbAlan Viverette } 169af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } else { 170af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell mDisplayOpts = detectDisplayOptions(); 1712aa09a94dd540650d3ebad7363e4fb3aab2ebc95Adam Powell } 17230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar a.recycle(); 173e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 174e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setDefaultNavigationContentDescription(defaultNavigationContentDescription); 175e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mHomeDescription = mToolbar.getNavigationContentDescription(); 1767901b2a54981b769bf27852c41ce612871a8e019Adam Powell 177e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 178e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final ActionMenuItem mNavItem = new ActionMenuItem(mToolbar.getContext(), 179e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 0, android.R.id.home, 0, 0, mTitle); 180e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 181e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onClick(View v) { 182e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mWindowCallback != null && mMenuPrepared) { 183e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mWindowCallback.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, mNavItem); 184e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 185e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 186e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 187e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 188e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 189e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar @Override 190e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar public void setDefaultNavigationContentDescription(int defaultNavigationContentDescription) { 191e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (defaultNavigationContentDescription == mDefaultNavigationContentDescription) { 192e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar return; 193e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 194e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mDefaultNavigationContentDescription = defaultNavigationContentDescription; 195e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (TextUtils.isEmpty(mToolbar.getNavigationContentDescription())) { 196e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setNavigationContentDescription(mDefaultNavigationContentDescription); 197e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 198e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 199e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 200af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell private int detectDisplayOptions() { 201af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell int opts = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | 202af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell ActionBar.DISPLAY_USE_LOGO; 203af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell if (mToolbar.getNavigationIcon() != null) { 204af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell opts |= ActionBar.DISPLAY_HOME_AS_UP; 20530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = mToolbar.getNavigationIcon(); 206af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } 207af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell return opts; 208af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell } 209af2d85973ed768e390bc2f40f255ea39cc6f6fe5Adam Powell 210e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 211e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public ViewGroup getViewGroup() { 212e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar; 213e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 214e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 215e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 216e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public Context getContext() { 217e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getContext(); 218e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 219e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 220e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 221e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isSplit() { 222e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return false; 223e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 224e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 225e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 226e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasExpandedActionView() { 227e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.hasExpandedActionView(); 228e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 229e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 230e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 231e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void collapseActionView() { 232e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.collapseActionView(); 233e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 234e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 235e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 236e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setWindowCallback(Window.Callback cb) { 237e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mWindowCallback = cb; 238e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 239e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 240e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 241e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setWindowTitle(CharSequence title) { 242e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // "Real" title always trumps window title. 243e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (!mTitleSet) { 244e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setTitleInt(title); 245e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 246e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 247e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 248e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 249e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public CharSequence getTitle() { 250e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getTitle(); 251e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 252e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 253e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 254e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setTitle(CharSequence title) { 255e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTitleSet = true; 256e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setTitleInt(title); 257e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 258e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 259e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private void setTitleInt(CharSequence title) { 260e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTitle = title; 261e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 262e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(title); 263e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 264e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 265e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 266e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 267e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public CharSequence getSubtitle() { 268e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.getSubtitle(); 269e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 270e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 271e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 272e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSubtitle(CharSequence subtitle) { 273e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSubtitle = subtitle; 274e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 275e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(subtitle); 276e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 277e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 278e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 279e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 280e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void initProgress() { 281e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Log.i(TAG, "Progress display unsupported"); 282e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 283e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 284e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 285e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void initIndeterminateProgress() { 286e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Log.i(TAG, "Progress display unsupported"); 287e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 288e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 289e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 290e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean canSplit() { 291e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return false; 292e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 293e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 294e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 295e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitView(ViewGroup splitView) { 296e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 297e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 298e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 299e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitToolbar(boolean split) { 300e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (split) { 301e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell throw new UnsupportedOperationException("Cannot split an android.widget.Toolbar"); 302e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 303e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 304e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 305e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 306e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setSplitWhenNarrow(boolean splitWhenNarrow) { 307e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // Ignore. 308e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 309e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 310e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 311e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasIcon() { 312e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mIcon != null; 313e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 314e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 315e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 316e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasLogo() { 317e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mLogo != null; 318e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 319e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 320e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 321e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setIcon(int resId) { 322e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setIcon(resId != 0 ? getContext().getDrawable(resId) : null); 323e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 324e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 325e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 326e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setIcon(Drawable d) { 327e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mIcon = d; 328e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 329e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 330e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 331e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 332e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setLogo(int resId) { 333e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell setLogo(resId != 0 ? getContext().getDrawable(resId) : null); 334e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 335e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 336e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 337e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setLogo(Drawable d) { 338e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mLogo = d; 339e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 340e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 341e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 342e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private void updateToolbarLogo() { 343e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell Drawable logo = null; 344e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_SHOW_HOME) != 0) { 345e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((mDisplayOpts & ActionBar.DISPLAY_USE_LOGO) != 0) { 346e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell logo = mLogo != null ? mLogo : mIcon; 347e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 348e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell logo = mIcon; 349e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 350e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 351e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setLogo(logo); 352e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 353e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 354e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 355e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean canShowOverflowMenu() { 356e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.canShowOverflowMenu(); 357e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 358e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 359e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 360e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isOverflowMenuShowing() { 361e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isOverflowMenuShowing(); 362e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 363e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 364e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 365e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isOverflowMenuShowPending() { 366e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isOverflowMenuShowPending(); 367e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 368e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 369e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 370e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean showOverflowMenu() { 371e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.showOverflowMenu(); 372e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 373e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 374e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 375e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hideOverflowMenu() { 376e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.hideOverflowMenu(); 377e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 378e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 379e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 380e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setMenuPrepared() { 381e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mMenuPrepared = true; 382e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 383e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 384e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 385e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setMenu(Menu menu, MenuPresenter.Callback cb) { 386e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mActionMenuPresenter == null) { 387e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter = new ActionMenuPresenter(mToolbar.getContext()); 388e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter); 389e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 390e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mActionMenuPresenter.setCallback(cb); 391e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setMenu((MenuBuilder) menu, mActionMenuPresenter); 392e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 393e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 394e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 395e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void dismissPopupMenus() { 396e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.dismissPopupMenus(); 397e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 398e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 399e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 400e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDisplayOptions() { 401e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mDisplayOpts; 402e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 403e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 404e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 405e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setDisplayOptions(int newOpts) { 406e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final int oldOpts = mDisplayOpts; 407e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell final int changed = oldOpts ^ newOpts; 408e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mDisplayOpts = newOpts; 409e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (changed != 0) { 410e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 411e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 412e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar updateHomeAccessibility(); 413e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 41430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 415e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 416e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 417e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & AFFECTS_LOGO_MASK) != 0) { 418e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell updateToolbarLogo(); 419e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 420e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 421e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 422e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_SHOW_TITLE) != 0) { 423e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(mTitle); 424e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(mSubtitle); 425e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 426e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setTitle(null); 427e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setSubtitle(null); 428e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 429e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 430e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 431e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((changed & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomView != null) { 432e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if ((newOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 433e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.addView(mCustomView); 434e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else { 435e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.removeView(mCustomView); 436e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 437e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 438e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 439e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 440e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 441e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 442e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell public void setEmbeddedTabView(ScrollingTabContainerView tabView) { 443e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null && mTabView.getParent() == mToolbar) { 444e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.removeView(mTabView); 445e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 446e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mTabView = tabView; 447e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (tabView != null && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) { 448e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.addView(mTabView, 0); 449e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams(); 450e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.width = ViewGroup.LayoutParams.WRAP_CONTENT; 451e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; 452e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.gravity = Gravity.START | Gravity.BOTTOM; 453e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell tabView.setAllowCollapse(true); 454e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 455e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 456e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 457e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 458e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean hasEmbeddedTabs() { 459e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mTabView != null; 460e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 461e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 462e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 463e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public boolean isTitleTruncated() { 464e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mToolbar.isTitleTruncated(); 465e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 466e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 467e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 468e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setCollapsible(boolean collapsible) { 469360c1d89227570510de7bb11195c986300488464Adam Powell mToolbar.setCollapsible(collapsible); 470e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 471e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 472e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 473e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setHomeButtonEnabled(boolean enable) { 474e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell // Ignore 475e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 476e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 477e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 478e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getNavigationMode() { 4796790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell return mNavigationMode; 480e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 481e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 482e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 483e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationMode(int mode) { 4846790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell final int oldMode = mNavigationMode; 4856790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell if (mode != oldMode) { 4866790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell switch (oldMode) { 4876790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_LIST: 4886790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell if (mSpinner != null && mSpinner.getParent() == mToolbar) { 4896790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mToolbar.removeView(mSpinner); 4906790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 4916790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 492e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell case ActionBar.NAVIGATION_MODE_TABS: 493e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null && mTabView.getParent() == mToolbar) { 494e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.removeView(mTabView); 495e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 496e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell break; 4976790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 4986790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 4996790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mNavigationMode = mode; 5006790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 5016790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell switch (mode) { 5026790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_STANDARD: 5036790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 5046790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_LIST: 5056790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ensureSpinner(); 5066790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mToolbar.addView(mSpinner, 0); 5076790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell break; 5086790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell case ActionBar.NAVIGATION_MODE_TABS: 509e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell if (mTabView != null) { 510e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell mToolbar.addView(mTabView, 0); 511e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams(); 512e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.width = ViewGroup.LayoutParams.WRAP_CONTENT; 513e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; 514e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell lp.gravity = Gravity.START | Gravity.BOTTOM; 515e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell } 516e002c2fb39f9df1db38a7412832882ae622660d4Adam Powell break; 5176790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell default: 5186790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell throw new IllegalArgumentException("Invalid navigation mode " + mode); 5196790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 520e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 521e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 522e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 5236790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell private void ensureSpinner() { 524e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mSpinner == null) { 525e178c93ff5457962cc694f44729dfa633de53f9bAlan Viverette mSpinner = new Spinner(getContext(), null, R.attr.actionDropDownStyle); 5266790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell Toolbar.LayoutParams lp = new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 5276790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL); 5286790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell mSpinner.setLayoutParams(lp); 529e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 5306790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell } 5316790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell 5326790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell @Override 5336790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell public void setDropdownParams(SpinnerAdapter adapter, 5346790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell AdapterView.OnItemSelectedListener listener) { 5356790b0502b0ab6375ab9f750a5faf6a9b1748a4cAdam Powell ensureSpinner(); 536e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setAdapter(adapter); 537e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setOnItemSelectedListener(listener); 538e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 539e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 540e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 541e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setDropdownSelectedPosition(int position) { 542e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mSpinner == null) { 543e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell throw new IllegalStateException( 544e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell "Can't set dropdown selected position without an adapter"); 545e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 546e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mSpinner.setSelection(position); 547e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 548e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 549e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 550e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDropdownSelectedPosition() { 551e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mSpinner != null ? mSpinner.getSelectedItemPosition() : 0; 552e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 553e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 554e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 555e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public int getDropdownItemCount() { 556e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mSpinner != null ? mSpinner.getCount() : 0; 557e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 558e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 559e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 560e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setCustomView(View view) { 561e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (mCustomView != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 562e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.removeView(mCustomView); 563e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 564e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mCustomView = view; 565e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (view != null && (mDisplayOpts & ActionBar.DISPLAY_SHOW_CUSTOM) != 0) { 566e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.addView(mCustomView); 567e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 568e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 569e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 570e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 571e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public View getCustomView() { 572e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell return mCustomView; 573e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 574e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 575e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 576e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void animateToVisibility(int visibility) { 57794283533aba1b8c895728feb40462250a1ebecceDoris Liu Animator anim = setupAnimatorToVisibility(visibility, DEFAULT_FADE_DURATION_MS); 57894283533aba1b8c895728feb40462250a1ebecceDoris Liu if (anim != null) { 57994283533aba1b8c895728feb40462250a1ebecceDoris Liu anim.start(); 58094283533aba1b8c895728feb40462250a1ebecceDoris Liu } 58194283533aba1b8c895728feb40462250a1ebecceDoris Liu } 58294283533aba1b8c895728feb40462250a1ebecceDoris Liu 58394283533aba1b8c895728feb40462250a1ebecceDoris Liu @Override 58494283533aba1b8c895728feb40462250a1ebecceDoris Liu public Animator setupAnimatorToVisibility(int visibility, long duration) { 58594283533aba1b8c895728feb40462250a1ebecceDoris Liu 586e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (visibility == View.GONE) { 58794283533aba1b8c895728feb40462250a1ebecceDoris Liu ObjectAnimator anim = ObjectAnimator.ofFloat(mToolbar, View.ALPHA, 1, 0); 58894283533aba1b8c895728feb40462250a1ebecceDoris Liu anim.setDuration(duration); 58994283533aba1b8c895728feb40462250a1ebecceDoris Liu anim.addListener(new AnimatorListenerAdapter() { 590e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell private boolean mCanceled = false; 591e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 592e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationEnd(Animator animation) { 593e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell if (!mCanceled) { 594e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setVisibility(View.GONE); 595e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 596e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 597e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 598e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 599e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationCancel(Animator animation) { 600e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mCanceled = true; 601e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 602e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 60394283533aba1b8c895728feb40462250a1ebecceDoris Liu return anim; 604e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } else if (visibility == View.VISIBLE) { 60594283533aba1b8c895728feb40462250a1ebecceDoris Liu ObjectAnimator anim = ObjectAnimator.ofFloat(mToolbar, View.ALPHA, 0, 1); 60694283533aba1b8c895728feb40462250a1ebecceDoris Liu anim.setDuration(duration); 60794283533aba1b8c895728feb40462250a1ebecceDoris Liu anim.addListener(new AnimatorListenerAdapter() { 608e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 609e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void onAnimationStart(Animator animation) { 610e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.setVisibility(View.VISIBLE); 611e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 612e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell }); 61394283533aba1b8c895728feb40462250a1ebecceDoris Liu return anim; 614e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 61594283533aba1b8c895728feb40462250a1ebecceDoris Liu return null; 616e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 617e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 618e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 619e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationIcon(Drawable icon) { 620e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mNavIcon = icon; 62130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 622e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 623e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 624e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 625e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationIcon(int resId) { 6266bb10554ba3a0b6127402951a477412d961d1072Adam Powell setNavigationIcon(resId != 0 ? mToolbar.getContext().getDrawable(resId) : null); 627e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 628e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 629e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 63030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar public void setDefaultNavigationIcon(Drawable defaultNavigationIcon) { 63130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar if (mDefaultNavigationIcon != defaultNavigationIcon) { 63230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mDefaultNavigationIcon = defaultNavigationIcon; 63330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar updateNavigationIcon(); 63430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 63530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 63630f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar 63730f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar private void updateNavigationIcon() { 63830f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 63930f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mToolbar.setNavigationIcon(mNavIcon != null ? mNavIcon : mDefaultNavigationIcon); 64030f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } else { 64130f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar mToolbar.setNavigationIcon(null); 64230f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 64330f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar } 64430f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar 64530f5dc935b30a72982cc2ee04c8c2a17ba95e885Yigit Boyar @Override 646e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationContentDescription(CharSequence description) { 647e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mHomeDescription = description; 648e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar updateHomeAccessibility(); 649e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 650e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 651e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 652e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void setNavigationContentDescription(int resId) { 653e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar setNavigationContentDescription(resId == 0 ? null : getContext().getString(resId)); 654e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 655e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar 656e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar private void updateHomeAccessibility() { 657e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { 658e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar if (TextUtils.isEmpty(mHomeDescription)) { 659e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mToolbar.setNavigationContentDescription(mDefaultNavigationContentDescription); 660e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } else { 661e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar mToolbar.setNavigationContentDescription(mHomeDescription); 662e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 663e91f7c0219d0f47d9c44a4933b571b0a482ec058Yigit Boyar } 664e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 665e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 666e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 667e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void saveHierarchyState(SparseArray<Parcelable> toolbarStates) { 668e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.saveHierarchyState(toolbarStates); 669e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 670e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 671e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell @Override 672e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell public void restoreHierarchyState(SparseArray<Parcelable> toolbarStates) { 673e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell mToolbar.restoreHierarchyState(toolbarStates); 674e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell } 675e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell 676fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 677fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setBackgroundDrawable(Drawable d) { 678fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar //noinspection deprecation 679fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setBackgroundDrawable(d); 680fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 681fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 682fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 683fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public int getHeight() { 684fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getHeight(); 685fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 686fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 687fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 688fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setVisibility(int visible) { 689fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setVisibility(visible); 690fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 691fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 692fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 693fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public int getVisibility() { 694fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getVisibility(); 695fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 696fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 697fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 698fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, 699fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar MenuBuilder.Callback menuBuilderCallback) { 700fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback); 701fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 702fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 703fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar @Override 704fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar public Menu getMenu() { 705fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar return mToolbar.getMenu(); 706fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar } 707fe6d57c366ba78295d3320cb73512f02876eed61Yigit Boyar 708e021e6ed8931a0a8296af182fc9b0c76b64fb0c4Adam Powell} 709