Loading core/java/com/android/internal/app/ToolbarActionBar.java +23 −25 Original line number Original line Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.internal.widget.ToolbarWidgetWrapper; import java.util.ArrayList; import java.util.ArrayList; public class ToolbarActionBar extends ActionBar { public class ToolbarActionBar extends ActionBar { private Toolbar mToolbar; private DecorToolbar mDecorToolbar; private DecorToolbar mDecorToolbar; private boolean mToolbarMenuPrepared; private boolean mToolbarMenuPrepared; private Window.Callback mWindowCallback; private Window.Callback mWindowCallback; Loading @@ -66,7 +65,6 @@ public class ToolbarActionBar extends ActionBar { }; }; public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) { public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) { mToolbar = toolbar; mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false); mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false); mWindowCallback = new ToolbarCallbackWrapper(windowCallback); mWindowCallback = new ToolbarCallbackWrapper(windowCallback); mDecorToolbar.setWindowCallback(mWindowCallback); mDecorToolbar.setWindowCallback(mWindowCallback); Loading @@ -91,8 +89,8 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setCustomView(int resId) { public void setCustomView(int resId) { final LayoutInflater inflater = LayoutInflater.from(mToolbar.getContext()); final LayoutInflater inflater = LayoutInflater.from(mDecorToolbar.getContext()); setCustomView(inflater.inflate(resId, mToolbar, false)); setCustomView(inflater.inflate(resId, mDecorToolbar.getViewGroup(), false)); } } @Override @Override Loading Loading @@ -132,17 +130,17 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setElevation(float elevation) { public void setElevation(float elevation) { mToolbar.setElevation(elevation); mDecorToolbar.getViewGroup().setElevation(elevation); } } @Override @Override public float getElevation() { public float getElevation() { return mToolbar.getElevation(); return mDecorToolbar.getViewGroup().getElevation(); } } @Override @Override public Context getThemedContext() { public Context getThemedContext() { return mToolbar.getContext(); return mDecorToolbar.getContext(); } } @Override @Override Loading @@ -152,12 +150,12 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setHomeAsUpIndicator(Drawable indicator) { public void setHomeAsUpIndicator(Drawable indicator) { mToolbar.setNavigationIcon(indicator); mDecorToolbar.setNavigationIcon(indicator); } } @Override @Override public void setHomeAsUpIndicator(int resId) { public void setHomeAsUpIndicator(int resId) { mToolbar.setNavigationIcon(resId); mDecorToolbar.setNavigationIcon(resId); } } @Override @Override Loading Loading @@ -280,7 +278,7 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setBackgroundDrawable(@Nullable Drawable d) { public void setBackgroundDrawable(@Nullable Drawable d) { mToolbar.setBackground(d); mDecorToolbar.setBackgroundDrawable(d); } } @Override @Override Loading @@ -290,12 +288,12 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public CharSequence getTitle() { public CharSequence getTitle() { return mToolbar.getTitle(); return mDecorToolbar.getTitle(); } } @Override @Override public CharSequence getSubtitle() { public CharSequence getSubtitle() { return mToolbar.getSubtitle(); return mDecorToolbar.getSubtitle(); } } @Override @Override Loading Loading @@ -389,44 +387,44 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public int getHeight() { public int getHeight() { return mToolbar.getHeight(); return mDecorToolbar.getHeight(); } } @Override @Override public void show() { public void show() { // TODO: Consider a better transition for this. // TODO: Consider a better transition for this. // Right now use no automatic transition so that the app can supply one if desired. // Right now use no automatic transition so that the app can supply one if desired. mToolbar.setVisibility(View.VISIBLE); mDecorToolbar.setVisibility(View.VISIBLE); } } @Override @Override public void hide() { public void hide() { // TODO: Consider a better transition for this. // TODO: Consider a better transition for this. // Right now use no automatic transition so that the app can supply one if desired. // Right now use no automatic transition so that the app can supply one if desired. mToolbar.setVisibility(View.GONE); mDecorToolbar.setVisibility(View.GONE); } } @Override @Override public boolean isShowing() { public boolean isShowing() { return mToolbar.getVisibility() == View.VISIBLE; return mDecorToolbar.getVisibility() == View.VISIBLE; } } @Override @Override public boolean openOptionsMenu() { public boolean openOptionsMenu() { return mToolbar.showOverflowMenu(); return mDecorToolbar.showOverflowMenu(); } } @Override @Override public boolean invalidateOptionsMenu() { public boolean invalidateOptionsMenu() { mToolbar.removeCallbacks(mMenuInvalidator); mDecorToolbar.getViewGroup().removeCallbacks(mMenuInvalidator); mToolbar.postOnAnimation(mMenuInvalidator); mDecorToolbar.getViewGroup().postOnAnimation(mMenuInvalidator); return true; return true; } } @Override @Override public boolean collapseActionView() { public boolean collapseActionView() { if (mToolbar.hasExpandedActionView()) { if (mDecorToolbar.hasExpandedActionView()) { mToolbar.collapseActionView(); mDecorToolbar.collapseActionView(); return true; return true; } } return false; return false; Loading @@ -434,10 +432,10 @@ public class ToolbarActionBar extends ActionBar { void populateOptionsMenu() { void populateOptionsMenu() { if (!mMenuCallbackSet) { if (!mMenuCallbackSet) { mToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback()); mDecorToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback()); mMenuCallbackSet = true; mMenuCallbackSet = true; } } final Menu menu = mToolbar.getMenu(); final Menu menu = mDecorToolbar.getMenu(); final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; if (mb != null) { if (mb != null) { mb.stopDispatchingItemsChanged(); mb.stopDispatchingItemsChanged(); Loading Loading @@ -518,7 +516,7 @@ public class ToolbarActionBar extends ActionBar { } } mClosingActionMenu = true; mClosingActionMenu = true; mToolbar.dismissPopupMenus(); mDecorToolbar.dismissPopupMenus(); if (mWindowCallback != null) { if (mWindowCallback != null) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } } Loading @@ -536,7 +534,7 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void onMenuModeChange(MenuBuilder menu) { public void onMenuModeChange(MenuBuilder menu) { if (mWindowCallback != null) { if (mWindowCallback != null) { if (mToolbar.isOverflowMenuShowing()) { if (mDecorToolbar.isOverflowMenuShowing()) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL, } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL, null, menu)) { null, menu)) { Loading core/java/com/android/internal/widget/ActionBarView.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -1341,6 +1341,22 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { updateHomeAccessibility(mUpGoerFive.isEnabled()); updateHomeAccessibility(mUpGoerFive.isEnabled()); } } @Override public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback) { if (mActionMenuPresenter != null) { mActionMenuPresenter.setCallback(presenterCallback); } if (mOptionsMenu != null) { mOptionsMenu.setCallback(menuBuilderCallback); } } @Override public Menu getMenu() { return mOptionsMenu; } static class SavedState extends BaseSavedState { static class SavedState extends BaseSavedState { int expandedMenuItemId; int expandedMenuItemId; boolean isOverflowOpen; boolean isOverflowOpen; Loading core/java/com/android/internal/widget/DecorToolbar.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.view.ViewGroup; import android.view.Window; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView; import android.widget.SpinnerAdapter; import android.widget.SpinnerAdapter; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuPresenter; /** /** Loading Loading @@ -93,4 +95,11 @@ public interface DecorToolbar { void setDefaultNavigationIcon(Drawable icon); void setDefaultNavigationIcon(Drawable icon); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); void setBackgroundDrawable(Drawable d); int getHeight(); void setVisibility(int visible); int getVisibility(); void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback); Menu getMenu(); } } core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +32 −0 Original line number Original line Diff line number Diff line Loading @@ -657,4 +657,36 @@ public class ToolbarWidgetWrapper implements DecorToolbar { mToolbar.restoreHierarchyState(toolbarStates); mToolbar.restoreHierarchyState(toolbarStates); } } @Override public void setBackgroundDrawable(Drawable d) { //noinspection deprecation mToolbar.setBackgroundDrawable(d); } @Override public int getHeight() { return mToolbar.getHeight(); } @Override public void setVisibility(int visible) { mToolbar.setVisibility(visible); } @Override public int getVisibility() { return mToolbar.getVisibility(); } @Override public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback) { mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback); } @Override public Menu getMenu() { return mToolbar.getMenu(); } } } Loading
core/java/com/android/internal/app/ToolbarActionBar.java +23 −25 Original line number Original line Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.internal.widget.ToolbarWidgetWrapper; import java.util.ArrayList; import java.util.ArrayList; public class ToolbarActionBar extends ActionBar { public class ToolbarActionBar extends ActionBar { private Toolbar mToolbar; private DecorToolbar mDecorToolbar; private DecorToolbar mDecorToolbar; private boolean mToolbarMenuPrepared; private boolean mToolbarMenuPrepared; private Window.Callback mWindowCallback; private Window.Callback mWindowCallback; Loading @@ -66,7 +65,6 @@ public class ToolbarActionBar extends ActionBar { }; }; public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) { public ToolbarActionBar(Toolbar toolbar, CharSequence title, Window.Callback windowCallback) { mToolbar = toolbar; mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false); mDecorToolbar = new ToolbarWidgetWrapper(toolbar, false); mWindowCallback = new ToolbarCallbackWrapper(windowCallback); mWindowCallback = new ToolbarCallbackWrapper(windowCallback); mDecorToolbar.setWindowCallback(mWindowCallback); mDecorToolbar.setWindowCallback(mWindowCallback); Loading @@ -91,8 +89,8 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setCustomView(int resId) { public void setCustomView(int resId) { final LayoutInflater inflater = LayoutInflater.from(mToolbar.getContext()); final LayoutInflater inflater = LayoutInflater.from(mDecorToolbar.getContext()); setCustomView(inflater.inflate(resId, mToolbar, false)); setCustomView(inflater.inflate(resId, mDecorToolbar.getViewGroup(), false)); } } @Override @Override Loading Loading @@ -132,17 +130,17 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setElevation(float elevation) { public void setElevation(float elevation) { mToolbar.setElevation(elevation); mDecorToolbar.getViewGroup().setElevation(elevation); } } @Override @Override public float getElevation() { public float getElevation() { return mToolbar.getElevation(); return mDecorToolbar.getViewGroup().getElevation(); } } @Override @Override public Context getThemedContext() { public Context getThemedContext() { return mToolbar.getContext(); return mDecorToolbar.getContext(); } } @Override @Override Loading @@ -152,12 +150,12 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setHomeAsUpIndicator(Drawable indicator) { public void setHomeAsUpIndicator(Drawable indicator) { mToolbar.setNavigationIcon(indicator); mDecorToolbar.setNavigationIcon(indicator); } } @Override @Override public void setHomeAsUpIndicator(int resId) { public void setHomeAsUpIndicator(int resId) { mToolbar.setNavigationIcon(resId); mDecorToolbar.setNavigationIcon(resId); } } @Override @Override Loading Loading @@ -280,7 +278,7 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void setBackgroundDrawable(@Nullable Drawable d) { public void setBackgroundDrawable(@Nullable Drawable d) { mToolbar.setBackground(d); mDecorToolbar.setBackgroundDrawable(d); } } @Override @Override Loading @@ -290,12 +288,12 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public CharSequence getTitle() { public CharSequence getTitle() { return mToolbar.getTitle(); return mDecorToolbar.getTitle(); } } @Override @Override public CharSequence getSubtitle() { public CharSequence getSubtitle() { return mToolbar.getSubtitle(); return mDecorToolbar.getSubtitle(); } } @Override @Override Loading Loading @@ -389,44 +387,44 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public int getHeight() { public int getHeight() { return mToolbar.getHeight(); return mDecorToolbar.getHeight(); } } @Override @Override public void show() { public void show() { // TODO: Consider a better transition for this. // TODO: Consider a better transition for this. // Right now use no automatic transition so that the app can supply one if desired. // Right now use no automatic transition so that the app can supply one if desired. mToolbar.setVisibility(View.VISIBLE); mDecorToolbar.setVisibility(View.VISIBLE); } } @Override @Override public void hide() { public void hide() { // TODO: Consider a better transition for this. // TODO: Consider a better transition for this. // Right now use no automatic transition so that the app can supply one if desired. // Right now use no automatic transition so that the app can supply one if desired. mToolbar.setVisibility(View.GONE); mDecorToolbar.setVisibility(View.GONE); } } @Override @Override public boolean isShowing() { public boolean isShowing() { return mToolbar.getVisibility() == View.VISIBLE; return mDecorToolbar.getVisibility() == View.VISIBLE; } } @Override @Override public boolean openOptionsMenu() { public boolean openOptionsMenu() { return mToolbar.showOverflowMenu(); return mDecorToolbar.showOverflowMenu(); } } @Override @Override public boolean invalidateOptionsMenu() { public boolean invalidateOptionsMenu() { mToolbar.removeCallbacks(mMenuInvalidator); mDecorToolbar.getViewGroup().removeCallbacks(mMenuInvalidator); mToolbar.postOnAnimation(mMenuInvalidator); mDecorToolbar.getViewGroup().postOnAnimation(mMenuInvalidator); return true; return true; } } @Override @Override public boolean collapseActionView() { public boolean collapseActionView() { if (mToolbar.hasExpandedActionView()) { if (mDecorToolbar.hasExpandedActionView()) { mToolbar.collapseActionView(); mDecorToolbar.collapseActionView(); return true; return true; } } return false; return false; Loading @@ -434,10 +432,10 @@ public class ToolbarActionBar extends ActionBar { void populateOptionsMenu() { void populateOptionsMenu() { if (!mMenuCallbackSet) { if (!mMenuCallbackSet) { mToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback()); mDecorToolbar.setMenuCallbacks(new ActionMenuPresenterCallback(), new MenuBuilderCallback()); mMenuCallbackSet = true; mMenuCallbackSet = true; } } final Menu menu = mToolbar.getMenu(); final Menu menu = mDecorToolbar.getMenu(); final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; if (mb != null) { if (mb != null) { mb.stopDispatchingItemsChanged(); mb.stopDispatchingItemsChanged(); Loading Loading @@ -518,7 +516,7 @@ public class ToolbarActionBar extends ActionBar { } } mClosingActionMenu = true; mClosingActionMenu = true; mToolbar.dismissPopupMenus(); mDecorToolbar.dismissPopupMenus(); if (mWindowCallback != null) { if (mWindowCallback != null) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } } Loading @@ -536,7 +534,7 @@ public class ToolbarActionBar extends ActionBar { @Override @Override public void onMenuModeChange(MenuBuilder menu) { public void onMenuModeChange(MenuBuilder menu) { if (mWindowCallback != null) { if (mWindowCallback != null) { if (mToolbar.isOverflowMenuShowing()) { if (mDecorToolbar.isOverflowMenuShowing()) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL, } else if (mWindowCallback.onPreparePanel(Window.FEATURE_OPTIONS_PANEL, null, menu)) { null, menu)) { Loading
core/java/com/android/internal/widget/ActionBarView.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -1341,6 +1341,22 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { updateHomeAccessibility(mUpGoerFive.isEnabled()); updateHomeAccessibility(mUpGoerFive.isEnabled()); } } @Override public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback) { if (mActionMenuPresenter != null) { mActionMenuPresenter.setCallback(presenterCallback); } if (mOptionsMenu != null) { mOptionsMenu.setCallback(menuBuilderCallback); } } @Override public Menu getMenu() { return mOptionsMenu; } static class SavedState extends BaseSavedState { static class SavedState extends BaseSavedState { int expandedMenuItemId; int expandedMenuItemId; boolean isOverflowOpen; boolean isOverflowOpen; Loading
core/java/com/android/internal/widget/DecorToolbar.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.view.ViewGroup; import android.view.Window; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView; import android.widget.SpinnerAdapter; import android.widget.SpinnerAdapter; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuPresenter; /** /** Loading Loading @@ -93,4 +95,11 @@ public interface DecorToolbar { void setDefaultNavigationIcon(Drawable icon); void setDefaultNavigationIcon(Drawable icon); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); void setBackgroundDrawable(Drawable d); int getHeight(); void setVisibility(int visible); int getVisibility(); void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback); Menu getMenu(); } }
core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +32 −0 Original line number Original line Diff line number Diff line Loading @@ -657,4 +657,36 @@ public class ToolbarWidgetWrapper implements DecorToolbar { mToolbar.restoreHierarchyState(toolbarStates); mToolbar.restoreHierarchyState(toolbarStates); } } @Override public void setBackgroundDrawable(Drawable d) { //noinspection deprecation mToolbar.setBackgroundDrawable(d); } @Override public int getHeight() { return mToolbar.getHeight(); } @Override public void setVisibility(int visible) { mToolbar.setVisibility(visible); } @Override public int getVisibility() { return mToolbar.getVisibility(); } @Override public void setMenuCallbacks(MenuPresenter.Callback presenterCallback, MenuBuilder.Callback menuBuilderCallback) { mToolbar.setMenuCallbacks(presenterCallback, menuBuilderCallback); } @Override public Menu getMenu() { return mToolbar.getMenu(); } } }