Merge "Implement action bar tab mode for Toolbar-based decor action bars" into lmp-preview-dev

This commit is contained in:
Adam Powell
2014-06-04 01:17:06 +00:00
committed by Android (Google) Code Review
5 changed files with 32 additions and 8 deletions

View File

@@ -1339,7 +1339,8 @@ public class Toolbar extends ViewGroup {
return getPaddingTop();
case Gravity.BOTTOM:
return getPaddingBottom() - child.getMeasuredHeight() - lp.bottomMargin;
return getHeight() - getPaddingBottom() -
child.getMeasuredHeight() - lp.bottomMargin;
default:
case Gravity.CENTER_VERTICAL:

View File

@@ -281,6 +281,9 @@ public class ToolbarActionBar extends ActionBar {
@Override
public void setNavigationMode(@NavigationMode int mode) {
if (mode == ActionBar.NAVIGATION_MODE_TABS) {
throw new IllegalArgumentException("Tabs not supported in this configuration");
}
mDecorToolbar.setNavigationMode(mode);
}

View File

@@ -349,10 +349,7 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar {
return mIncludeTabs;
}
public void setEmbeddedTabView(View view) {
setEmbeddedTabView((ScrollingTabContainerView) view);
}
@Override
public void setEmbeddedTabView(ScrollingTabContainerView tabs) {
if (mTabScrollView != null) {
removeView(mTabScrollView);

View File

@@ -71,7 +71,7 @@ public interface DecorToolbar {
int getDisplayOptions();
void setDisplayOptions(int opts);
void setEmbeddedTabView(View tabView);
void setEmbeddedTabView(ScrollingTabContainerView tabView);
boolean hasEmbeddedTabs();
boolean isTitleTruncated();
void setCollapsible(boolean collapsible);

View File

@@ -397,8 +397,19 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
}
@Override
public void setEmbeddedTabView(View tabView) {
public void setEmbeddedTabView(ScrollingTabContainerView tabView) {
if (mTabView != null && mTabView.getParent() == mToolbar) {
mToolbar.removeView(mTabView);
}
mTabView = tabView;
if (tabView != null && mNavigationMode == ActionBar.NAVIGATION_MODE_TABS) {
mToolbar.addView(mTabView, 0);
Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams();
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.START | Gravity.BOTTOM;
tabView.setAllowCollapse(true);
}
}
@Override
@@ -436,6 +447,11 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
mToolbar.removeView(mSpinner);
}
break;
case ActionBar.NAVIGATION_MODE_TABS:
if (mTabView != null && mTabView.getParent() == mToolbar) {
mToolbar.removeView(mTabView);
}
break;
}
mNavigationMode = mode;
@@ -448,7 +464,14 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
mToolbar.addView(mSpinner, 0);
break;
case ActionBar.NAVIGATION_MODE_TABS:
throw new IllegalStateException("Tabs not supported in this configuration");
if (mTabView != null) {
mToolbar.addView(mTabView, 0);
Toolbar.LayoutParams lp = (Toolbar.LayoutParams) mTabView.getLayoutParams();
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.START | Gravity.BOTTOM;
}
break;
default:
throw new IllegalArgumentException("Invalid navigation mode " + mode);
}