Merge "Fix bug #5025936 TableLayout layout direction resolution is broken"

This commit is contained in:
Fabrice Di Meglio
2011-07-14 15:31:03 -07:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 4 deletions

View File

@@ -9066,11 +9066,20 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
// Set resolved depending on layout direction
switch (getLayoutDirection()) {
case LAYOUT_DIRECTION_INHERIT:
// We cannot do the resolution if there is no parent
if (mParent == null) return;
// If this is root view, no need to look at parent's layout dir.
if (mParent != null &&
mParent instanceof ViewGroup &&
((ViewGroup) mParent).getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) {
mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED_RTL;
if (mParent instanceof ViewGroup) {
ViewGroup viewGroup = ((ViewGroup) mParent);
// Check if the parent view group can resolve
if (! viewGroup.canResolveLayoutDirection()) {
return;
}
if (viewGroup.getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) {
mPrivateFlags2 |= LAYOUT_DIRECTION_RESOLVED_RTL;
}
}
break;
case LAYOUT_DIRECTION_RTL:
@@ -9132,6 +9141,15 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit
recomputePadding();
}
protected boolean canResolveLayoutDirection() {
switch (getLayoutDirection()) {
case LAYOUT_DIRECTION_INHERIT:
return (mParent != null);
default:
return true;
}
}
/**
* Reset the resolved layout direction.
*