summaryrefslogtreecommitdiffstats
path: root/core/java/com
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2012-10-10 15:30:28 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2012-10-10 18:38:23 -0700
commit6bf6eb7d5f9207d6a3e1d6b61f17a8654d06fbdb (patch)
tree9263b79d4b26aff11b551b0f762ec41e94175d6b /core/java/com
parentf6215e55df1ab4f6cda33dd081c0a91062a1be63 (diff)
downloadframeworks_base-6bf6eb7d5f9207d6a3e1d6b61f17a8654d06fbdb.zip
frameworks_base-6bf6eb7d5f9207d6a3e1d6b61f17a8654d06fbdb.tar.gz
frameworks_base-6bf6eb7d5f9207d6a3e1d6b61f17a8654d06fbdb.tar.bz2
Fix bug #7325234 LayoutParams are not resolved correctly (Settings apps looks broken on Manta in Arabic)
Part 2 - fix remaining UI widgets by asking layout params resolution when needed Change-Id: I97c41639da645d77eeda85feec3bbcc7fc1260b9
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/internal/widget/ActionBarContextView.java2
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java13
2 files changed, 12 insertions, 3 deletions
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java
index 8bc1081..43c63b6 100644
--- a/core/java/com/android/internal/widget/ActionBarContextView.java
+++ b/core/java/com/android/internal/widget/ActionBarContextView.java
@@ -343,9 +343,11 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi
final int height = maxHeight - verticalPadding;
final int childSpecHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST);
+ final int layoutDirection = getLayoutDirection();
if (mClose != null) {
availableWidth = measureChildView(mClose, availableWidth, childSpecHeight, 0);
MarginLayoutParams lp = (MarginLayoutParams) mClose.getLayoutParams();
+ lp.resolveLayoutDirection(layoutDirection);
availableWidth -= lp.leftMargin + lp.rightMargin;
}
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 5a7f10c..d8b3d2f 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -946,6 +946,9 @@ public class ActionBarView extends AbsActionBarView {
final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ?
(ActionBar.LayoutParams) lp : null;
+ final int layoutDirection = getLayoutDirection();
+ lp.resolveLayoutDirection(layoutDirection);
+
int horizontalMargin = 0;
int verticalMargin = 0;
if (ablp != null) {
@@ -1096,9 +1099,9 @@ public class ActionBarView extends AbsActionBarView {
customView = mCustomNavView;
}
if (customView != null) {
- final int resolvedLayoutDirection = getLayoutDirection();
ViewGroup.LayoutParams lp = customView.getLayoutParams();
- lp.resolveLayoutDirection(resolvedLayoutDirection);
+ final int layoutDirection = getLayoutDirection();
+ lp.resolveLayoutDirection(layoutDirection);
final ActionBar.LayoutParams ablp = lp instanceof ActionBar.LayoutParams ?
(ActionBar.LayoutParams) lp : null;
final int gravity = ablp != null ? ablp.gravity : DEFAULT_CUSTOM_GRAVITY;
@@ -1139,7 +1142,7 @@ public class ActionBarView extends AbsActionBarView {
}
int xpos = 0;
- switch (Gravity.getAbsoluteGravity(hgravity, resolvedLayoutDirection)) {
+ switch (Gravity.getAbsoluteGravity(hgravity, layoutDirection)) {
case Gravity.CENTER_HORIZONTAL:
xpos = ((mRight - mLeft) - navWidth) / 2;
break;
@@ -1336,11 +1339,15 @@ public class ActionBarView extends AbsActionBarView {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
measureChildWithMargins(mUpView, widthMeasureSpec, 0, heightMeasureSpec, 0);
+ // measureChildWithMargins() has triggered layout params resolution, so no need
+ // to do it now
final LayoutParams upLp = (LayoutParams) mUpView.getLayoutParams();
mUpWidth = upLp.leftMargin + mUpView.getMeasuredWidth() + upLp.rightMargin;
int width = mUpView.getVisibility() == GONE ? 0 : mUpWidth;
int height = upLp.topMargin + mUpView.getMeasuredHeight() + upLp.bottomMargin;
measureChildWithMargins(mIconView, widthMeasureSpec, width, heightMeasureSpec, 0);
+ // measureChildWithMargins() has triggered layout params resolution, so no need
+ // to do it now
final LayoutParams iconLp = (LayoutParams) mIconView.getLayoutParams();
width += iconLp.leftMargin + mIconView.getMeasuredWidth() + iconLp.rightMargin;
height = Math.max(height,