Loading api/current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -21004,6 +21004,11 @@ package android.view { method public void onPrepareSubMenu(android.view.SubMenu); } public abstract interface CollapsibleActionView { method public abstract void onActionViewCollapsed(); method public abstract void onActionViewExpanded(); } public abstract interface ContextMenu implements android.view.Menu { method public abstract void clearHeader(); method public abstract android.view.ContextMenu setHeaderIcon(int); core/java/android/view/CollapsibleActionView.java 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.view; /** * When a {@link View} implements this interface it will receive callbacks * when expanded or collapsed as an action view alongside the optional, * app-specified callbacks to {@link OnActionExpandListener}. * * <p>See {@link MenuItem} for more information about action views. * See {@link android.app.ActionBar} for more information about the action bar. */ public interface CollapsibleActionView { /** * Called when this view is expanded as an action view. * See {@link MenuItem#expandActionView()}. */ public void onActionViewExpanded(); /** * Called when this view is collapsed as an action view. * See {@link MenuItem#collapseActionView()}. */ public void onActionViewCollapsed(); } core/java/com/android/internal/view/menu/MenuBuilder.java +63 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ public class MenuBuilder implements Menu { private static final String LOGTAG = "MenuBuilder"; private static final String PRESENTER_KEY = "android:menu:presenters"; private static final String ACTION_VIEW_STATES_KEY = "android:menu:actionviewstates"; private static final String EXPANDED_ACTION_VIEW_ID = "android:menu:expandedactionview"; private static final int[] sCategoryToOrder = new int[] { 1, /* No category */ Loading Loading @@ -308,6 +310,67 @@ public class MenuBuilder implements Menu { dispatchRestoreInstanceState(state); } public void saveActionViewStates(Bundle outStates) { SparseArray<Parcelable> viewStates = null; final int itemCount = size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = getItem(i); final View v = item.getActionView(); if (v != null && v.getId() != View.NO_ID) { if (viewStates == null) { viewStates = new SparseArray<Parcelable>(); } v.saveHierarchyState(viewStates); if (item.isActionViewExpanded()) { outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId()); } } if (item.hasSubMenu()) { final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); subMenu.saveActionViewStates(outStates); } } if (viewStates != null) { outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates); } } public void restoreActionViewStates(Bundle states) { if (states == null) { return; } SparseArray<Parcelable> viewStates = states.getSparseParcelableArray( getActionViewStatesKey()); final int itemCount = size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = getItem(i); final View v = item.getActionView(); if (v != null && v.getId() != View.NO_ID) { v.restoreHierarchyState(viewStates); } if (item.hasSubMenu()) { final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); subMenu.restoreActionViewStates(states); } } final int expandedId = states.getInt(EXPANDED_ACTION_VIEW_ID); if (expandedId > 0) { MenuItem itemToExpand = findItem(expandedId); if (itemToExpand != null) { itemToExpand.expandActionView(); } } } protected String getActionViewStatesKey() { return ACTION_VIEW_STATES_KEY; } public void setCallback(Callback cb) { mCallback = cb; } Loading core/java/com/android/internal/view/menu/MenuItemImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -553,6 +553,9 @@ public final class MenuItemImpl implements MenuItem { public MenuItem setActionView(View view) { mActionView = view; mActionProvider = null; if (view != null && view.getId() == View.NO_ID && mId > 0) { view.setId(mId); } mMenu.onItemActionRequestChanged(this); return this; } Loading core/java/com/android/internal/view/menu/SubMenuBuilder.java +9 −0 Original line number Diff line number Diff line Loading @@ -121,4 +121,13 @@ public class SubMenuBuilder extends MenuBuilder implements SubMenu { public boolean collapseItemActionView(MenuItemImpl item) { return mParentMenu.collapseItemActionView(item); } @Override public String getActionViewStatesKey() { final int itemId = mItem != null ? mItem.getItemId() : 0; if (itemId == 0) { return null; } return super.getActionViewStatesKey() + ":" + itemId; } } Loading
api/current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -21004,6 +21004,11 @@ package android.view { method public void onPrepareSubMenu(android.view.SubMenu); } public abstract interface CollapsibleActionView { method public abstract void onActionViewCollapsed(); method public abstract void onActionViewExpanded(); } public abstract interface ContextMenu implements android.view.Menu { method public abstract void clearHeader(); method public abstract android.view.ContextMenu setHeaderIcon(int);
core/java/android/view/CollapsibleActionView.java 0 → 100644 +39 −0 Original line number Diff line number Diff line /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.view; /** * When a {@link View} implements this interface it will receive callbacks * when expanded or collapsed as an action view alongside the optional, * app-specified callbacks to {@link OnActionExpandListener}. * * <p>See {@link MenuItem} for more information about action views. * See {@link android.app.ActionBar} for more information about the action bar. */ public interface CollapsibleActionView { /** * Called when this view is expanded as an action view. * See {@link MenuItem#expandActionView()}. */ public void onActionViewExpanded(); /** * Called when this view is collapsed as an action view. * See {@link MenuItem#collapseActionView()}. */ public void onActionViewCollapsed(); }
core/java/com/android/internal/view/menu/MenuBuilder.java +63 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ public class MenuBuilder implements Menu { private static final String LOGTAG = "MenuBuilder"; private static final String PRESENTER_KEY = "android:menu:presenters"; private static final String ACTION_VIEW_STATES_KEY = "android:menu:actionviewstates"; private static final String EXPANDED_ACTION_VIEW_ID = "android:menu:expandedactionview"; private static final int[] sCategoryToOrder = new int[] { 1, /* No category */ Loading Loading @@ -308,6 +310,67 @@ public class MenuBuilder implements Menu { dispatchRestoreInstanceState(state); } public void saveActionViewStates(Bundle outStates) { SparseArray<Parcelable> viewStates = null; final int itemCount = size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = getItem(i); final View v = item.getActionView(); if (v != null && v.getId() != View.NO_ID) { if (viewStates == null) { viewStates = new SparseArray<Parcelable>(); } v.saveHierarchyState(viewStates); if (item.isActionViewExpanded()) { outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId()); } } if (item.hasSubMenu()) { final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); subMenu.saveActionViewStates(outStates); } } if (viewStates != null) { outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates); } } public void restoreActionViewStates(Bundle states) { if (states == null) { return; } SparseArray<Parcelable> viewStates = states.getSparseParcelableArray( getActionViewStatesKey()); final int itemCount = size(); for (int i = 0; i < itemCount; i++) { final MenuItem item = getItem(i); final View v = item.getActionView(); if (v != null && v.getId() != View.NO_ID) { v.restoreHierarchyState(viewStates); } if (item.hasSubMenu()) { final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu(); subMenu.restoreActionViewStates(states); } } final int expandedId = states.getInt(EXPANDED_ACTION_VIEW_ID); if (expandedId > 0) { MenuItem itemToExpand = findItem(expandedId); if (itemToExpand != null) { itemToExpand.expandActionView(); } } } protected String getActionViewStatesKey() { return ACTION_VIEW_STATES_KEY; } public void setCallback(Callback cb) { mCallback = cb; } Loading
core/java/com/android/internal/view/menu/MenuItemImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -553,6 +553,9 @@ public final class MenuItemImpl implements MenuItem { public MenuItem setActionView(View view) { mActionView = view; mActionProvider = null; if (view != null && view.getId() == View.NO_ID && mId > 0) { view.setId(mId); } mMenu.onItemActionRequestChanged(this); return this; } Loading
core/java/com/android/internal/view/menu/SubMenuBuilder.java +9 −0 Original line number Diff line number Diff line Loading @@ -121,4 +121,13 @@ public class SubMenuBuilder extends MenuBuilder implements SubMenu { public boolean collapseItemActionView(MenuItemImpl item) { return mParentMenu.collapseItemActionView(item); } @Override public String getActionViewStatesKey() { final int itemId = mItem != null ? mItem.getItemId() : 0; if (itemId == 0) { return null; } return super.getActionViewStatesKey() + ":" + itemId; } }