diff options
| author | Yigit Boyar <yboyar@google.com> | 2014-09-17 21:33:08 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-17 21:33:08 +0000 |
| commit | 49e6cece96a8c0c27b0fd8236fa1afcdbaa96277 (patch) | |
| tree | 31694655e227a9a45092ec579338cab8cc02045d | |
| parent | 1307c4c78dd8e05697935e7882a512d96c6e349a (diff) | |
| parent | 9c568e659229144e5b7fe5c442c2207b00a7865f (diff) | |
| download | frameworks_base-49e6cece96a8c0c27b0fd8236fa1afcdbaa96277.zip frameworks_base-49e6cece96a8c0c27b0fd8236fa1afcdbaa96277.tar.gz frameworks_base-49e6cece96a8c0c27b0fd8236fa1afcdbaa96277.tar.bz2 | |
am 98171686: am bb837c51: am 7fa36f26: Merge "Handle action mode changes properly for actionbar tabs" into lmp-dev
* commit '981716869ff075021642da13ccb47167305766cc':
Handle action mode changes properly for actionbar tabs
3 files changed, 26 insertions, 29 deletions
diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java index a8f7bb3..2377c22 100644 --- a/core/java/com/android/internal/app/WindowDecorActionBar.java +++ b/core/java/com/android/internal/app/WindowDecorActionBar.java @@ -866,14 +866,7 @@ public class WindowDecorActionBar extends ActionBar implements mDecorToolbar.animateToVisibility(toActionMode ? View.GONE : View.VISIBLE); mContextView.animateToVisibility(toActionMode ? View.VISIBLE : View.GONE); - if (mTabScrollView != null && !mDecorToolbar.hasEmbeddedTabs() && - isCollapsed(mDecorToolbar.getViewGroup())) { - mTabScrollView.animateToVisibility(toActionMode ? View.GONE : View.VISIBLE); - } - } - - private boolean isCollapsed(View view) { - return view == null || view.getVisibility() == View.GONE || view.getMeasuredHeight() == 0; + // mTabScrollView's visibility is not affected by action mode. } public Context getThemedContext() { diff --git a/core/java/com/android/internal/widget/ActionBarContainer.java b/core/java/com/android/internal/widget/ActionBarContainer.java index d24f32f..847a47d 100644 --- a/core/java/com/android/internal/widget/ActionBarContainer.java +++ b/core/java/com/android/internal/widget/ActionBarContainer.java @@ -260,6 +260,11 @@ public class ActionBarContainer extends FrameLayout { return view == null || view.getVisibility() == GONE || view.getMeasuredHeight() == 0; } + private int getMeasuredHeightWithMargins(View view) { + final LayoutParams lp = (LayoutParams) view.getLayoutParams(); + return view.getMeasuredHeight() + lp.topMargin + lp.bottomMargin; + } + @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mActionBarView == null && @@ -271,26 +276,23 @@ public class ActionBarContainer extends FrameLayout { if (mActionBarView == null) return; - int nonTabMaxHeight = 0; - final int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); - if (child == mTabContainer) { - continue; - } - final LayoutParams lp = (LayoutParams) child.getLayoutParams(); - nonTabMaxHeight = Math.max(nonTabMaxHeight, isCollapsed(child) ? 0 : - child.getMeasuredHeight() + lp.topMargin + lp.bottomMargin); - } - if (mTabContainer != null && mTabContainer.getVisibility() != GONE) { - final int mode = MeasureSpec.getMode(heightMeasureSpec); - if (mode == MeasureSpec.AT_MOST) { - final int maxHeight = MeasureSpec.getSize(heightMeasureSpec); - setMeasuredDimension(getMeasuredWidth(), - Math.min(nonTabMaxHeight + mTabContainer.getMeasuredHeight(), - maxHeight)); + int nonTabMaxHeight = 0; + final int childCount = getChildCount(); + for (int i = 0; i < childCount; i++) { + final View child = getChildAt(i); + if (child == mTabContainer) { + continue; + } + nonTabMaxHeight = Math.max(nonTabMaxHeight, isCollapsed(child) ? 0 : + getMeasuredHeightWithMargins(child)); } + final int mode = MeasureSpec.getMode(heightMeasureSpec); + final int maxHeight = mode == MeasureSpec.AT_MOST ? + MeasureSpec.getSize(heightMeasureSpec) : Integer.MAX_VALUE; + setMeasuredDimension(getMeasuredWidth(), + Math.min(nonTabMaxHeight + getMeasuredHeightWithMargins(mTabContainer), + maxHeight)); } } @@ -303,8 +305,10 @@ public class ActionBarContainer extends FrameLayout { if (tabContainer != null && tabContainer.getVisibility() != GONE) { final int containerHeight = getMeasuredHeight(); + final LayoutParams lp = (LayoutParams) tabContainer.getLayoutParams(); final int tabHeight = tabContainer.getMeasuredHeight(); - tabContainer.layout(l, containerHeight - tabHeight, r, containerHeight); + tabContainer.layout(l, containerHeight - tabHeight - lp.bottomMargin, r, + containerHeight - lp.bottomMargin); } boolean needsInvalidate = false; diff --git a/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java b/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java index 63a4843..478c8f2 100644 --- a/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +++ b/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java @@ -578,7 +578,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { @Override public void animateToVisibility(int visibility) { if (visibility == View.GONE) { - mToolbar.animate().translationY(mToolbar.getHeight()).alpha(0) + mToolbar.animate().alpha(0) .setListener(new AnimatorListenerAdapter() { private boolean mCanceled = false; @Override @@ -594,7 +594,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { } }); } else if (visibility == View.VISIBLE) { - mToolbar.animate().translationY(0).alpha(1) + mToolbar.animate().alpha(1) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { |
