diff options
| author | Adam Powell <adamp@google.com> | 2010-07-21 14:35:41 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-07-21 14:35:41 -0700 |
| commit | 71cbae81b05c7fff8e27d54168c24e38693ff2f3 (patch) | |
| tree | fa4a2a9d940657597bed0e0dd36ce9b2ef0040d4 /core/java | |
| parent | 46ea4828840952384bd37a73438c88ba5d931856 (diff) | |
| parent | 178097727fab0f41810b1ffd4baf84ff8ed32c42 (diff) | |
| download | frameworks_base-71cbae81b05c7fff8e27d54168c24e38693ff2f3.zip frameworks_base-71cbae81b05c7fff8e27d54168c24e38693ff2f3.tar.gz frameworks_base-71cbae81b05c7fff8e27d54168c24e38693ff2f3.tar.bz2 | |
Merge "Fix bug 2859423 - action bar: need a way to choose item in spinner"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/ActionBar.java | 36 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/ActionBarImpl.java | 41 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 10 |
3 files changed, 72 insertions, 15 deletions
diff --git a/core/java/android/app/ActionBar.java b/core/java/android/app/ActionBar.java index e1124a1..fbc0be3 100644 --- a/core/java/android/app/ActionBar.java +++ b/core/java/android/app/ActionBar.java @@ -93,6 +93,35 @@ public abstract class ActionBar { NavigationCallback callback); /** + * Set the action bar into dropdown navigation mode and supply an adapter that will + * provide views for navigation choices. + * + * @param adapter An adapter that will provide views both to display the current + * navigation selection and populate views within the dropdown + * navigation menu. + * @param callback A NavigationCallback that will receive events when the user + * selects a navigation item. + * @param defaultSelectedPosition Position within the provided adapter that should be + * selected from the outset. + */ + public abstract void setDropdownNavigationMode(SpinnerAdapter adapter, + NavigationCallback callback, int defaultSelectedPosition); + + /** + * Set the selected navigation item in dropdown or tabbed navigation modes. + * + * @param position Position of the item to select. + */ + public abstract void setSelectedNavigationItem(int position); + + /** + * Get the position of the selected navigation item in dropdown or tabbed navigation modes. + * + * @return Position of the selected item. + */ + public abstract int getSelectedNavigationItem(); + + /** * Set the action bar into standard navigation mode, supplying a title and subtitle. * * Standard navigation mode is default. The title is automatically set to the @@ -289,13 +318,6 @@ public abstract class ActionBar { public abstract void selectTab(Tab tab); /** - * Select the tab at <code>position</code> - * - * @param position Position of the tab to select - */ - public abstract void selectTabAt(int position); - - /** * Callback interface for ActionBar navigation events. */ public interface NavigationCallback { diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java index ec6d2be..992fdee 100644 --- a/core/java/com/android/internal/app/ActionBarImpl.java +++ b/core/java/com/android/internal/app/ActionBarImpl.java @@ -17,7 +17,6 @@ package com.android.internal.app; import com.android.internal.view.menu.MenuBuilder; -import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContextView; @@ -114,10 +113,18 @@ public class ActionBarImpl extends ActionBar { } public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback) { + setDropdownNavigationMode(adapter, callback, -1); + } + + public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback, + int defaultSelectedPosition) { cleanupTabs(); - mActionView.setCallback(callback); mActionView.setNavigationMode(NAVIGATION_MODE_DROPDOWN_LIST); mActionView.setDropdownAdapter(adapter); + if (defaultSelectedPosition >= 0) { + mActionView.setDropdownSelectedPosition(defaultSelectedPosition); + } + mActionView.setCallback(callback); } public void setStandardNavigationMode() { @@ -139,6 +146,31 @@ public class ActionBarImpl extends ActionBar { mActionView.setCallback(null); } + public void setSelectedNavigationItem(int position) { + switch (mActionView.getNavigationMode()) { + case NAVIGATION_MODE_TABS: + selectTab(mTabs.get(position)); + break; + case NAVIGATION_MODE_DROPDOWN_LIST: + mActionView.setDropdownSelectedPosition(position); + break; + default: + throw new IllegalStateException( + "setSelectedNavigationItem not valid for current navigation mode"); + } + } + + public int getSelectedNavigationItem() { + switch (mActionView.getNavigationMode()) { + case NAVIGATION_MODE_TABS: + return mSelectedTab.getPosition(); + case NAVIGATION_MODE_DROPDOWN_LIST: + return mActionView.getDropdownSelectedPosition(); + default: + return -1; + } + } + private void cleanupTabs() { if (mSelectedTab != null) { selectTab(null); @@ -330,11 +362,6 @@ public class ActionBarImpl extends ActionBar { trans.commit(); } - @Override - public void selectTabAt(int position) { - selectTab(mTabs.get(position)); - } - /** * @hide */ diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 8f8b3af..d703a2f 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -343,7 +343,15 @@ public class ActionBarView extends ViewGroup { public void setDropdownAdapter(SpinnerAdapter adapter) { mSpinner.setAdapter(adapter); } - + + public void setDropdownSelectedPosition(int position) { + mSpinner.setSelection(position); + } + + public int getDropdownSelectedPosition() { + return mSpinner.getSelectedItemPosition(); + } + public View getCustomNavigationView() { return mCustomNavView; } |
